明智审慎使用private继承,通常只在表示“实现”关系时,相当于表现出C++中没有的interface的作用。
private继承后,需要在派生类中重声明(redeclare)所需的对外接口(为了实现,using一下或使用::域作用符调用基类版本)。
再强调:public继承,表示派生类 is-a 基类,可以替换基类出现的地方(里氏替换)。
空白基类最优化: 空的类取sizeof,值是1,但是由其派生的类,这个“垫补”的1可以减掉。
- class a{
- };
- class b:public a{
- int t2;
- };
类a的sizeof是1,类b继承a,加入一个int成员,sizeof是4(32位机)。
没有垫补的1,这个对象就不占据内存,创建时就无法为其分配内存空间了。
阅读(669) | 评论(0) | 转发(0) |