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 ++ - 定义 - 私有继承[重复]的主要内容,如果未能解决你的问题,请参考以下文章