部落格198 C 私有建構函式也可以在類外使用

2021-10-04 22:22:24 字數 838 閱讀 9836

內容:無意中翻到了之前大一讀的清華大學出版社的《c++程式設計》,以前剛讀的時候一直有一句不理解,現在才回想起來c++單例就用的這個知識點。

在對類的靜態私有資料成員初始化的同時,還可以引用類的其它私有成員
單例中的應用:

#include

using namespace std;

class singleton

private:

singleton()

//防拷貝

singleton

(const singleton&

)= delete;

singleton& operator=

(const singleton&

)= delete;

private:

static singleton instance;

//單例物件};

singleton singleton:

:instance;

//靜態物件的類外初始化

intmain()

程式成功執行:

疑惑處:

為什麼靜態物件初始化的時候使用了建構函式,但是建構函式是私有的,不可以類外使用,為啥可以成功?
原因:

在對類的靜態私有資料成員初始化的同時,還可以引用類的其它私有成員(包括資料成員和函式成員)

c 中的私有建構函式

一般建構函式不是私有或者保護成員,但建構函式可以使私有成員函式,在一些特殊的場合,會把建構函式定義為私有或者保護成員。c 類的建構函式一般不應該是私有函式,因為私有函式不能被其他類或者全域性函式所使用。而建立c 例項需要呼叫建構函式。所以如果建構函式是私有函式的話,除了類自己的方法之外,其他類不能構...

C 物件中的私有成員變數也可以被訪問

c 物件中的私有 保護 成員變數也可以從物件外面訪問。下面的 會讓你大吃一驚 include classtestclass intmain int argc,char argv 其執行結果為 為什麼會這樣?原因很簡單 在c 中,private,protected只是程式邏輯上的一種保護,即如果破壞了...

C 建構函式和析構函式是否可以繼承?

先看乙個例子 include class a 建構函式不能為 virtual a int aa a aa virtual a public int a class b public a b int bb b bb b int aa,int bb a aa b bb b public int b cl...