公有继承和私有继承的区别?

来源:百度知道 编辑:UC知道 时间:2024/05/26 00:15:03
如题
请详细说明

我自己总结过,书上也有:

共有继承:
1 共有继承不改变基类成员在派生类中的访问权限。在共有继承下,基类的public成员,protect成员,private成员在派生类中保持它们在基类中相同的访问权限。
2 在派生类中定义的成员函数不能直接访问基类的私有成员,只能通过public或protect成员函数访问。
私有继承:
1 基类的private和protect都在派生类中变成了private成员,不能被派生类的外部函数访问。
2 派生类的成员函数不能访问基类的private成员,但可以访问基类的public和protect成员,并通过它们访问基类private成员。

class D : public class B
{};

B中的public成员protected成员在D中分别为public和protected, B中private成员在D中不可见。

class D : private class B
{};

B中的public成员protected成员在D中均为private, B中private成员在D中不可见。

公有继承就是is-a关系,私有继承就是has-a关系。
详细参加Effective c++第三版,上面讲这个讲得相当之详细。

对成员变量、函数的访问控制有区别
具体可以查下相关的书