Skip to content

Latest commit

 

History

History
22 lines (14 loc) · 1.38 KB

049 - public, private 和 protected 继承有什么区别.md

File metadata and controls

22 lines (14 loc) · 1.38 KB

https://stackoverflow.com/questions/860339/difference-between-private-public-and-protected-inheritance

问题

C++ 中的 public、private 和 protected 继承有什么区别?

回答

C++ Primer Plus 上有个表格很详细,

公有继承 保护继承 私有继承
基类的公有成员变为 派生类的公有成员 派生类的保护成员 派生类的私有成员(派生类可以直接访问)
基类的保护成员变为 派生类的保护成员 派生类的保护成员 派生类的私有成员(派生类可以直接访问)
基类的私有成员变为 只能通过基类接口访问 只能通过基类接口访问 只能通过基类接口访问
能否隐式向上转换 能(但只能在派生类中) 不能

对于公有继承:基类的 protected 和 public 成员都是可见的。并且,使用公有继承,基类的公有成员将变为派生类的公有成员,基类的保护成员将变成派生类的保护成员,基类的私有成员将变为派生类的私有成员。

对于保护继承:使用保护继承时,基类的公有成员和保护成员都会变成派生类的保护成员。这就是保护继承和公有继承的最主要区别。

对于私有继承:私有继承时,基类的公有成员和保护成员都将成为派生类的私有成员!