c++語言和單例的特性決定了單例不可繼承。
單例有如下幾項要求:
1. 建構函式為私有,或者至少不可以被此類的繼承體系以外的類訪問當,即要麼是private,最壞也是protected
2. 建構函式只被呼叫一次,以初始化static物件。
所以如果b1,b2,繼承至單例a,則不可以實現在程式執行的整個過程中既有乙個b1單例又有乙個b2單例,而且兩個單例不存在依賴關係,原因是b1、b2共享乙個a基類,而b1和b2的靜態物件宣告在a中,即兩者共享乙個base靜態物件,因此對b1和b2兩次呼叫初始化函式(getinstance)時候,實際上基類a的靜態物件會有兩次初始化的動作(getinstance),當然,基類的靜態物件只會例項化一次,具體例項化位子類的b1還是b2型別,要看兩個子類例項化呼叫的先後次序。
所以即使兩個例項化都第一次呼叫getinstance,也只例項化了乙份靜態物件,並且被兩個類共享。這樣的單例沒有意義。
#include using namespace std;
class csingleton
static void release() //必須,否則會導致記憶體洩露
}virtual void printfname()
protected:
csingleton()
{ cout<<"csingleton"s1->printfname();
s2->printfname();
s1->release();
system("pause");
return 0;
css中可繼承與不可繼承
不可繼承的 display margin border padding background height min height max height width min width max width overflow position left right top bottom z index ...
css可繼承屬性和不可繼承屬性
不可繼承的 display margin border padding background height min height max height width min width max width overflow position left right top bottom z index ...
css 可繼承和不可繼承的屬性
一 有繼承性的屬性 1 字型系列屬性 font 組合字型 font family 規定元素的字型系列 font weight 設定字型的粗細 font size 設定字型的尺寸 font size繼承的是計算後的實際值 font style 定義字型的風格 font variant 設定小型大寫字母...