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