本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie
经验:private 继承意味 is-implemented-in-terms of。它通常比 composition 的级别低。
但是当 derived class 需要访问 protected base class 的成员,或需要重新定义继承而来的 virtual 函数时,这么设计是合理的class Empty{}; //这种 class 不带任何数据,没有 non-static 成员变量,没有 virtual 函数(因为这种函数的存在会为每个对象带来一个 vptr, Item 7),
//也没有 virtual base classes (因为这样的 base classes 也会招致何种上的额外开销, Item 40)
class HoldsAnInt{
private:
int x;
Empty e;
};
int main(){
cout << sizeof(Empty) << " " << sizeof(HoldsAnInt) << endl;//32位机器输出:1 8
return 0;
}
class HoldsAnInt : private Empty{
private:
int x;
} ;
int main(){
cout << sizeof(Empty) << " " << sizeof(HoldsAnInt) << endl;//32位机器输出:1 4
return 0;
}Effective C++ Item 39 明智而审慎地使用 private 继承,布布扣,bubuko.com
Effective C++ Item 39 明智而审慎地使用 private 继承
原文:http://blog.csdn.net/zhengsenlie/article/details/37807261