# private继承和public继承的区别
```
class Base{};
class Derived:public Base{};
int printName(Base& a){};
int main()
{
Derived aDerived;
printName(aDerived);
}
````
如果Derived是private继承于Base那么这段代码会编译不过去。因为编译器不认为Derived 和 Base是is_a的关系,在编译的时候不对`printName(aDerived)`进行向上隐式转换。
# private继承是什么语意
当你要让一个继承类private方式继承于Base类的时候,说明你这个新类在实现中需要借用Base的一些实现。但base的任何信息你不希望对外呈现,仅仅是你的新类使用一下。所以private继承过来的所有接口都会变成继承类的private类型。
网友评论