只能在堆上創建對象or只能在棧上創建對象

  • 在棧上常見對象特點最顯著的就是最後系統調用完以後銷燬對象
  • 在堆上創建對象了,即是自己申請對象資源空間自己銷燬。
    好吧,看一下在棧上創建對象吧。
class StackOnly   
{
public:       
	static StackOnly CreateObject()     
	{ 
		return StackOnly();
	} private:   
		StackOnly() 
		{} 
};

棧上創建對象,嗯是沒有啥說的,只要在調用構造函數時候沒有使用new,operator就行了
在來看一下在堆上創建對象吧

class HeapOnly    {
public:     
	static HeapOnly* CreateObject() 
	{ 
		return new HeapOnly;
	} private:    
		HeapOnly() {}         
		HeapOnly(const HeapOnly&);
		   
	HeapOnly(const HeapOnly&) = delete; 
};

將拷貝構造函數,構造函數私有化,防止直接的調用拷貝構造函數,和構造函數,然後在public中設置一個靜態成員函數完成堆對象的創建

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章