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

时间:2014-12-12 15:25:29

标签: c++ extend

我的问题很简单:〜给定两个类,我希望其中一个扩展另一个类,但将一些方法转换为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();

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

3 个答案:

答案 0 :(得分:1)

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

  class A:   private B
  {
  }

解释了C ++中私有,公共和受保护继承之间的区别here

答案 1 :(得分:1)

这就是私人继承的用途。

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.
};

答案 2 :(得分:0)

当您声明B类时,您可以将继承类型从public更改为private。

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

为每个方法使用适当的覆盖。

看起来您并不希望所有方法都变为私有。根据改变其可见性的方法分数选择继承类型。