2011-06-18 61 views

回答

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答案我张贴相当长的一段前退房。

0

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

这意味着

在某些罕见的情况下,边缘“在...的术语实施”时,它可以比具有一个成员变量更有效。

我知道私人遗产最常见的用法是boost::noncopyable