C++ 扩展类 强制某些方法私有

C++ Extending Class Forcing some methods private

本文关键字:方法 扩展 C++      更新时间:2023-10-16

我的问题很简单:~给定两个类,我想用其中一个来扩展另一个类,但将一些方法转换为private

Class B
public Method a();
public Method b();
public Method c();
Class A extends B
private Method a();
private Method b();
public Method c();

这可能吗,怎么可能?谢谢!

这就是私有继承的用途。

class A:   private B
{
    // All methods of class B are now private.
    // To make some "public" again:
    public:
        Method c()  { return B::c(); } // Call the private c-method from class B.
};

使用私有继承,基类 B 中的所有函数都将变为私有。

  class A:   private B
  {
  }

这里解释了C++中私有、公共和受保护继承之间的区别。

当您声明类 B 时,可以将继承类型从公共更改为私有。

class B : public A {
   private:
      baseMethod();
};
or
class B : private A {
   public:
      baseMethod();
};

对每种方法使用所需的适当重写。

看起来您不希望所有方法都变成私有。根据更改其可见性的方法的比例选择继承类型。