欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程资源 > 编程问答 >内容正文

编程问答

cpp 对象模型探索 / 不能被继承的类 -凯发k8官方网

发布时间:2024/10/14 编程问答 28 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 cpp 对象模型探索 / 不能被继承的类 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

两种方法

  • c 11 final 关键字
  • 友元类 虚继承。
  • 栗子

    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!)

    总结

    以上是凯发k8官方网为你收集整理的cpp 对象模型探索 / 不能被继承的类的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图