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

}

如果您倾向于了解继承和访问说明符,您可以在上查看更多我不久前发布的答案。

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

它意味着“根据……实施”

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

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