剑指offer——不能被继承的类
生活随笔
收集整理的這篇文章主要介紹了
剑指offer——不能被继承的类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法一:通過將類的構造函數和析構函數聲明成private來防止子類繼承。聲明靜態的方法來構造和析構類的對象。
但是用起來不是很方便。只能得到在堆上的實例,而不能得到在棧上的實例。
方法二:構造輔助類CBase,聲明CTest為CBase友元類,并將自己的構造和析構聲明為private,然后CTest虛繼承CBase。
根據虛繼承的特性,虛基類的構造函數由最終的子類負責構造。
但是這種方法的可移植性不好,雖然在VS中能夠編譯,但是GCC中對friend的要求不同于VS。目前最新的GCC還不支持模板參數類型作為友元類型。
#include <iostream> using namespace std;class CBase { public:friend class CTest; private:CBase(){cout<<"base::construct"<<endl;}~CBase(){cout<<"base::destruct"<<endl;} };class CTest:virtual public CBase { public:CTest(){cout<<"CTest::construct"<<endl;}~CTest(){cout<<"CTest::destruct"<<endl;} };void main() {CTest *t=new CTest();delete t; }轉載于:https://www.cnblogs.com/dgy5554/p/3973390.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的剑指offer——不能被继承的类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 花呗这个月还不上怎么办
- 下一篇: 平安车e贷贷款条件