1. 程式人生 > >只能在堆上建立物件or只能在棧上建立物件

只能在堆上建立物件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中設定一個靜態成員函式完成堆物件的建立