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

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

C++Primer13.1.3節(jié)練習-創(chuàng)新互聯(lián)

練習13.9:

創(chuàng)新互聯(lián)憑借在網(wǎng)站建設、網(wǎng)站推廣領域領先的技術能力和多年的行業(yè)經(jīng)驗,為客戶提供超值的營銷型網(wǎng)站建設服務,我們始終認為:好的營銷型網(wǎng)站就是好的業(yè)務員。我們已成功為企業(yè)單位、個人等客戶提供了成都做網(wǎng)站、網(wǎng)站設計服務,以良好的商業(yè)信譽,完善的服務及深厚的技術力量處于同行領先地位。

析構函數(shù)執(zhí)行與構造函數(shù)相反的操作:構造函數(shù)初始化對象的非static數(shù)據(jù)成員,還可能做一些其他工作;析構函數(shù)釋放對象使用的資源,并銷毀對象的非static數(shù)據(jù)成員

析構函數(shù)是類的成員函數(shù),名字由波浪線接類名構成,它沒有返回值,不接受參數(shù)

類似拷貝構造函數(shù)和拷貝賦值運算符,對于某些類,合成析構函數(shù)用來阻止該類型的對象被銷毀,如果不是這種情況,合成析構函數(shù)的函數(shù)體就為空

當一個類未定義自己的析構函數(shù)時,編譯器會為它定義一個合成析構函數(shù)

練習13.10:

StrBlob類和StrBlobPtr類沒有定義析構函數(shù),編譯器會為這兩個類定義合成析構函數(shù)。

StrBlob對象銷毀時,在合成析構函數(shù)的空函數(shù)體執(zhí)行完畢后,會進行隱含析構階段,此時會將數(shù)據(jù)成員data銷毀,調(diào)用shared_ptr的析構函數(shù)。引用計數(shù)減1,減為0后釋放內(nèi)存

StrBlobPtr對象銷毀時,在合成析構函數(shù)的空函數(shù)體執(zhí)行完畢后,會進行隱含析構階段,此時會將數(shù)據(jù)成員wptr和curr銷毀,調(diào)用weak_ptr的析構函數(shù)銷毀wptr。引用計數(shù)不變,curr是內(nèi)置數(shù)據(jù)類型,直接銷毀

練習13.11:

#include#includeusing namespace std;

class HasPtr
{
public:
	HasPtr(const std::string& s = std::string()):
		ps(new std::string(s)),i(0) { }
	//拷貝構造函數(shù)
	HasPtr(const HasPtr& hp): ps(new std::string(*hp.ps)),i(hp.i) { }
	//拷貝賦值運算符
	HasPtr& operator=(const HasPtr&);
	//析構函數(shù)
	~HasPtr() { }

private:
	std::string* ps;
	int i;
};

HasPtr& HasPtr::operator=(const HasPtr& ptr)
{
	delete ps;
	ps = new string(*ptr.ps);
	i = ptr.i;
	return *this;
}

練習13.12:

會發(fā)生三次析構操作

函數(shù)執(zhí)行結束時,臨時變量item1和item2被銷毀,執(zhí)行析構函數(shù)

函數(shù)結束后,非引用形參accum被銷毀,執(zhí)行析構函數(shù)

練習13.13:

#include#includeusing namespace std;
#includeclass HasPtr
{
public:
	HasPtr(const std::string& s = std::string()):
		ps(new std::string(s)),i(0) { }
	//拷貝構造函數(shù)
	HasPtr(const HasPtr& hp): ps(new std::string(*hp.ps)),i(hp.i) { }
	//拷貝賦值運算符
	HasPtr& operator=(const HasPtr&);
	//析構函數(shù)
	~HasPtr() { }

private:
	std::string* ps;
	int i;
};

HasPtr& HasPtr::operator=(const HasPtr& ptr)
{
	delete ps;
	ps = new string(*ptr.ps);
	i = ptr.i;
	return *this;
}

struct X {
	//默認構造
	X() { std::cout<< "X()"<< std::endl; }
	//拷貝構造
	X(const X&) { std::cout<< "X(const X&)"<< std::endl; }
	//拷貝賦值運算符
	X& operator=(const X& x)
	{
		std::cout<< "X& operator=(const X& x)"<< std::endl;
		return *this;
	}
	//析構函數(shù)
	~X() { std::cout<< "~X()"<< std::endl; }
};

void func(X x)
{

}


int main()
{
	//創(chuàng)建X對象
	X x;
	//非引用參數(shù)傳遞
	func(x);
	//引用參數(shù)傳遞
	X x1(x);
	//動態(tài)分配
	X* x2 = new X;
	//存放于容器
	vectorv;
	v.push_back(x);

	system("pause");
	return 0;
}

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


當前題目:C++Primer13.1.3節(jié)練習-創(chuàng)新互聯(lián)
轉載來源:http://weahome.cn/article/gooie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部