設計乙個類,只能在堆上建立物件

2021-09-05 12:32:02 字數 885 閱讀 9228

設計乙個類:只能在堆上建立物件

//思路:說明不能在棧上建立物件,考慮到棧上建立物件會發生哪些事:

//(1)建構函式(2)拷貝構造 

//所以先遮蔽掉建構函式,即設為私有。存在問題:在堆上建立物件也會呼叫建構函式,設為私有對其有影響

//解決:提供成員函式介面,在成員函式中建立堆物件。存在問題:成員函式需要物件來呼叫,現在無法建立物件

//解決辦法:設為靜態成員函式,這樣就不依賴於物件呼叫

//以上基本解決一般情況,但是還存在一些問題:(1)利用堆上建立的物件進行拷貝構造,構造出的物件是棧上的

//解決辦法:在拷貝構造也要寫成私有

//對於全域性物件,也構建不出來,滿足題意

//設計乙個類:只能在堆上建立物件

//思路:說明不能在棧上建立物件,考慮到棧上建立物件會發生哪些事:

//(1)建構函式(2)拷貝構造

//所以先遮蔽掉建構函式,即設為私有。存在問題:在堆上建立物件也會呼叫建構函式,設為私有對其有影響

//解決:提供成員函式介面,在成員函式中建立堆物件。存在問題:成員函式需要物件來呼叫,現在無法建立物件

//解決辦法:設為靜態成員函式,這樣就不依賴於物件呼叫

//以上基本解決一般情況,但是還存在一些問題:(1)利用堆上建立的物件進行拷貝構造,構造出的物件是棧上的

//解決辦法:在拷貝構造也要寫成私有

//對於全域性物件,也構建不出來,滿足題意

class heaponly

private:

heaponly()

heaponly(heaponly&hp);

};//heaponly p;

int main()

C 設計乙個類,只能在棧 堆 上建立物件

設計乙個類,只能在棧上建立物件 使用new運算子,物件會建立在堆上,也就是說只要不用new去建立物件就可以實現,我們知道new和delete分別呼叫了operator new和operator delete,如果我們把這兩個函式宣告為私有的,操作符new就不能用了。class a a private...

如何建立乙個只能在堆上產生物件的類

一 分析 1.定義乙個只能在堆上產生物件的類,自然聯想到new malloc calloc等動態分配記憶體的方法來產生物件。但在c 中,產生物件要呼叫建構函式,當然選擇new來解決。2.只能在堆上而不能在棧上建立物件,想到可以把建構函式定義成private或者protected 裡面,防止在類外的棧...

保證只能在堆上new乙個類物件

有的時候為了保證乙個類的物件必須在堆上被建立,比如當我們需要手動控制乙個物件的生命週期的時候,這個時候就必須保證這個物件是在堆上建立的,如何保證呢,有個小的技巧 就是將析構函式給private了.並且用另外個公共函式來呼叫析夠函式.class a private a int main 原因是c 是乙...