午夜无码人妻aⅴ大片色欲张津瑜,国产69久久久欧美黑人A片,色妺妺视频网,久久久久国产综合AV天堂

設計一個只能在堆內存上實例化的類和一個只能在棧內存上實例化的類

只能在堆內存上實例化的類:將析構函數(shù)定義為private,在棧上不能自動調用析構函數(shù),只能手動調用。也可以將構造函數(shù)定義為private,但這樣需要手動寫一個函數(shù)實現(xiàn)對象的構造。

網站建設哪家好,找成都創(chuàng)新互聯(lián)!專注于網頁設計、網站建設、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了桂平免費建站歡迎大家使用!

只能在棧內存上實例化的類:將函數(shù)operator new和operator delete定義為private,這樣使用new操作符創(chuàng)建對象時候,無法調用operator new,delete銷毀對象也無法調用operator delete。

#include <iostream>
using namespace std;

//只能在堆內存上實例化的類
class CHeapOnly
{
public:
	CHeapOnly()
	{
		cout << "Constructor of CHeapOnly!" << endl;
	}

	void Destroy() const
	{
		delete this;
	}

private:
	~CHeapOnly()
	{
		cout << "Destructor of CHeapOnly!" << endl;
	}
};

//只能在棧內存上實例化的類,就是不能使用new來構造類,把operator new私有化
class CStackOnly
{
public:
	CStackOnly()
	{
		cout << "Constructor of CStackOnly!" << endl;
	}

	~CStackOnly()
	{
		cout << "Destrucotr of CStackOnly!" << endl;
	}

private:
	void* operator new(size_t size)
	{
	}

	void operator delete(void * ptr)
	{
	}
};

int main()
{
	CHeapOnly* pHeap = new CHeapOnly;
	pHeap->Destroy();
	CStackOnly objStack;
	return 0;
}
//只能在堆內存上實例化的類
// 下面一個類也只能在堆內存上生成,將構造函數(shù)和析構函數(shù)都定義為private,
//但是可以通過類的static函數(shù)創(chuàng)建對象,不過這個對象是不能被繼承的。
class FinalClass
{
public:
	static FinalClass* GetInstance()
	{
		cout << "Constructor of the class" << endl;
		return new FinalClass;
	}

	static void DeleteInstance(FinalClass* pInstance)
	{
		cout << "Destructor of the class" << endl;
		delete pInstance;
		pInstance = 0;
	}

private:
	FinalClass() {}
	~FinalClass() {}
};

int main()
{
	FinalClass* fc = FinalClass::GetInstance();
	FinalClass::DeleteInstance(fc);

	return 0;
}

新聞名稱:設計一個只能在堆內存上實例化的類和一個只能在棧內存上實例化的類
當前地址:http://www.ekvhdxd.cn/article14/ijsege.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網站、網站內鏈自適應網站、用戶體驗、定制開發(fā)、網頁設計公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管