C 限制乙個類只能在堆上或棧上分配

2021-06-27 12:20:32 字數 252 閱讀 2801

方法一:

//只在棧上class stackonly};//只在堆上class heaponly ~heaponly(){}};

前者將過載new運算子並限制為私有,後者將建構函式私有。方法二:只在堆上分配:將類的建構函式屬性置為private,同時提供static成員函式getinstance,在函式中new乙個新物件,然後返回物件指標或者引用。這樣實現的類可以保證只可以在堆上分配物件。只在棧上分配:過載類的new操作符,使過載後的new操作符的功能為空。

設計乙個只能在堆上或棧上的類

一道c 筆試題 設計乙個只能在堆記憶體上例項化的類和乙個只能在棧記憶體上例項化的類 只能在堆記憶體上例項化的類 將析構函式定義為private,在棧上不能自動呼叫析構函式,只能手動呼叫。也可以將建構函式定義為private,但這樣需要手動寫乙個函式實現物件的構造。只能在棧記憶體上例項化的類 將函式o...

設計乙個只能在堆上或棧上例項化的類

一道c 筆試題 設計乙個只能在堆記憶體上例項化的類和乙個只能在棧記憶體上例項化的類 只能在堆記憶體上例項化的類 將析構函式定義為private,在棧上不能自動呼叫析構函式,只能手動呼叫。也可以將建構函式定義為private,但這樣需要手動寫乙個函式實現物件的構造。只能在棧記憶體上例項化的類 將函式o...

如何定乙個只能在堆上或者只能在棧上定義的類

c 中,物件的建立分為兩種,一種是靜態建立,如a a 另一種是動態建立,如 a ptr new a 靜態建立 由編譯器為物件在棧上分配記憶體,是通過直接移動棧頂指標,挪出適當的空間,然後在這片記憶體空間上呼叫建構函式形成乙個棧物件,使用這種方法,直接呼叫類的建構函式 動態建立 是通過new運算子將物...