C ++ - defenition - 私有继承

时间:2011-06-18 07:53:03

标签: c++ oop

  

可能重复:
  Private/protected inheritance

你能举例说明C++中私人继承的例子吗?据我了解,在这种继承中,父母的公共和受保护的特征不会过滤儿童,只有孩子的公共特征是可见的。

2 个答案:

答案 0 :(得分:2)

私人继承
基类的所有Public成员都成为衍生类的成员Private。&
基类的所有Protected成员都成为派生类的Private成员。

代码示例:

Class Base
{
    public:
      int a;
    protected:
      int b;
    private:
      int c;
};

class Derived:private Base   //Not mentioning private is OK because for classes it  defaults to private 
{
    void doSomething()
    {
        a = 10;  //Allowed 
        b = 20;  //Allowed
        c = 30;  //Not Allowed, Compiler Error
    }
};

class Derived2:public Derived
{
    void doSomethingMore()
    {
        a = 10;  //Not Allowed, Compiler Error, a is private member of Derived now
        b = 20;  //Not Allowed, Compiler Error, b is private member of Derived now
        c = 30;  //Not Allowed, Compiler Error
    }
};

int main()
{
    Derived obj;
    obj.a = 10;  //Not Allowed, Compiler Error
    obj.b = 20;  //Not Allowed, Compiler Error
    obj.c = 30;  //Not Allowed, Compiler Error

}

如果您倾向于了解继承和访问说明符,您可以在我很久以前发布的 this 回复中查看更多内容。

答案 1 :(得分:0)

私有继承通常用作组合形式。它与拥有继承类型的成员变量没有太大区别。

这意味着" 以...... "

的方式实施

在一些罕见的边缘情况下,它可能比拥有成员变量更有效。

我所知道的私有继承的最常见用法是boost::noncopyable