真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

設(shè)計(jì)一個(gè)只能在堆內(nèi)存上實(shí)例化的類和一個(gè)只能在棧內(nèi)存上實(shí)例化的類

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

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

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

#include 
using namespace std;

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

	void Destroy() const
	{
		delete this;
	}

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

//只能在棧內(nèi)存上實(shí)例化的類,就是不能使用new來構(gòu)造類,把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;
}
//只能在堆內(nèi)存上實(shí)例化的類
// 下面一個(gè)類也只能在堆內(nèi)存上生成,將構(gòu)造函數(shù)和析構(gòu)函數(shù)都定義為private,
//但是可以通過類的static函數(shù)創(chuàng)建對(duì)象,不過這個(gè)對(duì)象是不能被繼承的。
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;
}

網(wǎng)頁名稱:設(shè)計(jì)一個(gè)只能在堆內(nèi)存上實(shí)例化的類和一個(gè)只能在棧內(nèi)存上實(shí)例化的類
文章分享:http://weahome.cn/article/ijsege.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部