C ++ - 定义 - 私有继承[重复]

Posted

技术标签:

【中文标题】C ++ - 定义 - 私有继承[重复]【英文标题】:C++ - defenition - private inheritance [duplicate] 【发布时间】:2011-09-17 16:32:23 【问题描述】:

可能重复:Private/protected inheritance

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

【问题讨论】:

【参考方案1】:

私有继承: 基类的所有 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 上查看我很久以前发布的答案。

【讨论】:

【参考方案2】:

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

它的意思是“按照...实现

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

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

【讨论】:

以上是关于C ++ - 定义 - 私有继承[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C ++未定义对已继承的受保护类成员的引用[重复]

在继承中使用私有变量[重复]

私有成员和继承[重复]

C ++编译器错误中的简单类继承[重复]

阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_9_接口的私有方法定义

c ++继承编译问题未定义对派生类的引用[重复]