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