C++ C++;-辩护-私人继承
可能重复:C++ C++;-辩护-私人继承,c++,oop,C++,Oop,可能重复: 你能给我举一个在C++中私有继承的例子吗?据我所知,在这种类型的继承中,父对象的公共和受保护功能不会通过子对象过滤,只有子对象的公共功能才可见。私有继承: 基类的所有Public成员变为派生类的Private成员& 基类的所有受保护的成员将成为派生类的私有成员 代码示例: Class Base { public: int a; protected: int b; private: int c; }; class Deri
你能给我举一个在
C++
中私有继承的例子吗?据我所知,在这种类型的继承中,父对象的公共和受保护功能不会通过子对象过滤,只有子对象的公共功能才可见。私有继承:基类的所有
Public
成员变为派生类的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
}
如果您倾向于了解继承和访问说明符,您可以在上查看更多我不久前发布的答案。私有继承通常用作一种组合形式。它与继承类型的成员变量没有太大区别
它意味着“根据……实施”
在某些罕见的边缘情况下,它可能比使用成员变量更有效
我所知道的私有继承最常见的用法是