假設我們有一個類,靜態成員對象
class Egg
{
static Egg e;
int i;
Egg(int ii):i(ii) {}
Egg(const Egg &); //Prevents copy-constructor to be called
public:
static Egg* instance() {return &e}
};
Egg Egg::e(47);
此代碼可以保證,我們不能創造任何對象,但可以只使用靜態對象。但是我們怎麼能在類中聲明同一個類的靜態對象。
還有一點,因爲e是一個靜態對象,靜態對象只能調用靜態成員函數,所以如何在這裏爲靜態對象e調用構造函數,而且它的構造函數是私有的。
靜態對象的類內,但它如何可以訪問私有的構造。 如果對象的構造函數是私有的,通常不能創建對象。 – Luv
它可以訪問構造函數,因爲它是在類中定義的。班級內的所有內容都可以訪問私人成員。 –