c++如何定义一个只能在堆上(栈上)生成对象的类?
生活随笔
收集整理的這篇文章主要介紹了
c++如何定义一个只能在堆上(栈上)生成对象的类?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
只能在堆上
方法:將析構函數設置為私有
原因:C++ 是靜態綁定語言,編譯器管理棧上對象的生命周期,編譯器在為類對象分配棧空間時,會先檢查類的析構函數的訪問性。若析構函數不可訪問,則不能在棧上創建對象。
只能在棧上
方法:將 new 和 delete 重載為私有
原因:在堆上生成對象,使用 new 關鍵詞操作,其過程分為兩階段:第一階段,使用 new 在堆上尋找可用內存,分配給對象;第二階段,調用構造函數生成對象。將 new 操作設置為私有,那么第一階段就無法完成,就不能夠在堆上生成對象。
總結
以上是生活随笔為你收集整理的c++如何定义一个只能在堆上(栈上)生成对象的类?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++虚继承和虚函数和抽象类、接口类,聚
- 下一篇: c++强制类型转换运算符