C++ - 定义 - 私有(private)继承

标签 c++ oop

<分区>

Possible Duplicate:
Private/protected inheritance

你能给我在C++中私有(private)继承的例子吗?据我了解,在这种继承中,父项的公共(public)和 protected 特征不会过滤子项,只有子项的公共(public)特征是可见的。

最佳答案

私有(private)继承:
基类的所有 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 查看更多信息 我很久以前发布的答案。

关于C++ - 定义 - 私有(private)继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394654/

相关文章:

c++ - 命名空间与类模板名称冲突 : different compiler behavior

objective-c - 类方法在 iOS 中如何工作?

Java:使单例不那么冗长

java - 如何从同一方法中查看对象的不同参数?

C++ : Error using argv[1] into a function to read a . txt 文件

c++ - 如何将 SQLite 嵌入到 C++ 项目中

c++ - C++ 中 std::reference_wrapper 和类型的编译器错误

C++ 只输出一位小数

C++ 属性声明

php - 在类中包装 Shell 命令的模式