cpp 对象模型探索 / 不能被继承的类 -ag凯发k8国际
ag凯发k8国际
收集整理的这篇文章主要介绍了
cpp 对象模型探索 / 不能被继承的类
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
两种方法
栗子
class a { private:a() {}friend class b; }; class b : virtual public a { public:int m_b; };我们的目的是让 b 成为一个不能被继承的类。分析代码,由于 b 是 a 的友元,所以即使 a 的构造函数是私有的,b也是可以调用的,所以 b 继承 a 这个关系是成立的。
关键来了,由于 b 是虚继承 a,这就导致了如果 c 类想继承 b,则 c 类必须首先调用 a 类的构造函数(详情),而 a 类的构造函数是私有的,所以 c 类不能调用 a 类的构造函数,所以,b 类是不可继承的。
总结
使用时尽量使用方案 1,因为方案 2 是以牺牲性能、破坏类的封装性为代价的。
(saw:game over!)
总结
以上是ag凯发k8国际为你收集整理的cpp 对象模型探索 / 不能被继承的类的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: