亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++Primer第五版 第十三章習題答案(11~20)

2019-11-06 06:53:26
字體:
來源:轉載
供稿:網友

11:構造函數中,分配的動態內存對象,需要delete

 ~Hasptr() { delete ps; }//必須首先delete對象ps,ps指向一個動態分配的string

12:知識點:當指向一個對象的引用或者指針離開作用域是,析構函數并不會執行

析構函數執行三次:accum,item1,item2

13:

#include<iostream>  #include<string>  #include<fstream>#include<list>#include<vector> #include<map>  #include<set>#include<cctype>//ctype無法打開,包含tolower()函數和ispunct函數#include<algorithm>#include<utility>//保存pair的頭文件#include<memory>using namespace std;class A{public:	A(int m):val(m)//默認構造函數	{		cout<<"默認構造函數"<<endl;	}	A& Operator= (const A& a) //拷貝賦值運算符	{		val = a.val;		cout<<"拷貝復制運算符"<<endl;		return *this;	}	~A()//析構函數	{		cout<<"析構函數"<<endl;	}	int val;};void show1(A& a){	cout<<a.val<<endl;}void show2(A a){	cout<<a.val<<endl;}int main(int argc, char**argv)  {	//將A的對象當作引用或者非引用傳遞	A a(10);	A b(5);	A c(2);	c = a;	show1(a);	show2(b);	show2(c);	//存放于容器中	vector<A> m;	m.push_back(a);	//動態分配	A *d = new A(5);	show2(*d);	delete d;	return 0;}  

14:知識點:這五種操作通常被視為一個整體,一般來說都會一起出現

知識點2:需要析構函數的類也需要拷貝和賦值操作,合成的析構函數不會delete一個指針數據成員,所以有時我們需要自己定義一個析構函數釋放構造函數分配的內存,所以需要析構函數的類,也就需要拷貝構造函數和拷貝賦值運算符,而合成的拷貝構造函數和拷貝賦值運算符只能簡單的拷貝指針成員,這就意味著多個對象指向同一個內存,釋放多個對象時,造成多次delete

知識點3:如果一個類需要自定義版本的析構函數,那么肯定是需要自定義的拷貝構造函數和拷貝賦值運算符

知識點4:拷貝操作和復制操作是相互結合的,如果需要一種,也需要另一種,但不一定意味著需要析構函數

會輸出三個一樣的數字,合成的拷貝構造函數只是簡單的進行拷貝

15:使用了自定義版本的合成構造函數,生成新的序號,那么肯定輸出就是三個不一樣的數字了

16:函數的參數變為引用版本的形參,無需拷貝,結果改變,但輸出仍為三個不一樣的數字

17:

#include<iostream>  #include<string>  #include<fstream>#include<list>#include<vector> #include<map>  #include<set>#include<cctype>//ctype無法打開,包含tolower()函數和ispunct函數#include<algorithm>#include<utility>//保存pair的頭文件#include<memory>using namespace std;class A{public:	A()//默認構造函數,14題	{		static int val1 = 10;		val = val1++;	}	A(A &a)//自定義版本的拷貝構造函數	{		val = a.val+5;	}	int val;};void show2(A a){	cout<<a.val<<endl;}void show3(const A& a){	cout<<a.val<<endl;}int main(int argc, char**argv)  {	A a, b = a, c = b;	show2(a);//調用函數時需要拷貝一次	show2(b);	show2(c);// 	show3(a);//這里的調用不需要拷貝構造運算符// 	show3(b);// 	show3(c);	return 0;}  

18:知識點1:我們可以通過將拷貝控制成員定義為 =default 來顯式的要求編譯器生成合成的版本(只能對有合成版本的函數使用),在此之后,合成的函數將隱式的聲明為內聯

知識點2:iostream類阻止了拷貝,避免多個對象同時寫入,或讀取相同的IO緩沖,我們可以將拷貝構造函數和拷貝賦值運算符定義為刪除的函數來阻止拷貝,雖然聲明了他們,但不能以任何的方式使用他們,在參數列表之后加上 =delete 來指出我們希望其是被刪除的,這是為了通知編譯器,我們不希望這些函數被定義

知識點3:可以對任何類內函數(析構函數除外)聲明 =delete ,且必須出現在函數第一次聲明的時候,如果析構函數被聲明=delete ,析構函數被刪除,就無法銷毀此類型的對象

知識點4:本質上,當不可能拷貝、賦值、銷毀類的成員時,類的拷貝構造函數會被定義為刪除的

知識點5:C++11之前,是將拷貝構造函數和拷貝賦值運算符定義為PRivate來阻止拷貝的(舊標準)

見下方19題:

19:拷貝控制成員:拷貝構造函數和拷貝賦值運算符

#include<iostream>  #include<string>  #include<fstream>#include<list>#include<vector> #include<map>  #include<set>#include<cctype>//ctype無法打開,包含tolower()函數和ispunct函數#include<algorithm>#include<utility>//保存pair的頭文件#include<memory>using namespace std;//具體操作時將類的聲明置于頭文件中class Employee{public:	Employee();//默認構造函數	Employee(string& s);//接受一個string的構造函數		Employee(const Employee&) =delete;//不需要拷貝構造函數,怎么可能有人一樣。將其聲明為 =delete	Employee& operator= (const Employee&) =delete;	int number(){return _number;}private:	string employee;	int _number;	static int O_number;//static靜態成員數據在類內聲明,但只可以在類外定義,在類外定義時可不加static};int Employee::O_number = 0;Employee::Employee()//默認構造函數{	_number = O_number++;}Employee::Employee(string& s)//接受一個string的構造函數{	employee = s;	_number = O_number++;}void show(Employee a){	cout<<a.number()<<endl;}int main(int argc, char**argv)  {	Employee a, b, c;	show(a);//調用函數時需要拷貝一次	show(b);	show(c);	return 0;} 

20:

TextQuery和QueryResult所有成員(包括智能指針和容器)都將被拷貝 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产户外野外| 精品国产电影一区| 国产亚洲精品日韩| 国产精品免费电影| 91系列在线播放| 国产精品狼人色视频一区| 欧美在线国产精品| 亚洲精品美女免费| 亚洲成人动漫在线播放| 精品日本美女福利在线观看| 91色中文字幕| 欧亚精品在线观看| 欧美理论电影在线播放| 欧美激情视频免费观看| 国产精品pans私拍| 色综合伊人色综合网| 久久精品91久久久久久再现| 韩日精品中文字幕| 日韩精品小视频| 欧美猛男性生活免费| 精品亚洲一区二区三区| 日本亚洲欧洲色| 成人写真视频福利网| 欧美电影在线观看完整版| 久久九九有精品国产23| 久久精品小视频| 92国产精品视频| www.亚洲一区| 欧美高清电影在线看| 91精品视频免费| 亚洲人成人99网站| 欧美日韩激情视频| 亚洲图片欧洲图片av| 亚洲成人中文字幕| 欧美色xxxx| 亚洲欧洲日本专区| 欧美日韩国产成人| 国产亚洲欧美日韩一区二区| 国产在线视频2019最新视频| 少妇高潮久久久久久潘金莲| 成人羞羞国产免费| 欧美乱大交做爰xxxⅹ性3| 国产精品白嫩初高中害羞小美女| 国产一区二区三区精品久久久| 欧美极品少妇xxxxⅹ免费视频| 岛国av一区二区| 国产精品久久久久久久久免费| 久久精品视频在线观看| 成人做爽爽免费视频| 国产午夜精品一区二区三区| 国产精品成人一区二区三区吃奶| 亚洲摸下面视频| 91亚洲国产成人久久精品网站| 日韩精品免费在线视频| 国产一区二区三区高清在线观看| 国产视频精品免费播放| 国产精品丝袜一区二区三区| 国产成人高潮免费观看精品| 欧美三级欧美成人高清www| 欧美中文字幕视频在线观看| 97人人模人人爽人人喊中文字| 久久久999精品免费| 欧美性高跟鞋xxxxhd| 日韩av在线一区| 亚洲人成绝费网站色www| 国产成人综合亚洲| 日韩大片在线观看视频| 欧美日韩国产页| 日韩av大片在线| 国产欧美精品久久久| 国产精品国产自产拍高清av水多| 一区二区三区美女xx视频| 欧美亚洲激情视频| 97色在线观看免费视频| 91精品国产自产在线观看永久| 亚洲а∨天堂久久精品9966| 亚洲片av在线| 啊v视频在线一区二区三区| 国产精品一区二区三区久久| 国产欧美久久一区二区| 国产精品免费网站| 亚洲香蕉成视频在线观看| 亚洲精品国产精品乱码不99按摩| 免费97视频在线精品国自产拍| 国产精品久久久亚洲| 欧美有码在线视频| 国产精品爱啪在线线免费观看| 久久久久久久久久av| 亚洲欧美一区二区三区情侣bbw| 日韩av中文字幕在线免费观看| 亚洲人精品午夜在线观看| 亚洲日本中文字幕免费在线不卡| 在线播放国产一区中文字幕剧情欧美| 亚洲精品国精品久久99热一| 亚洲一区二区黄| 7777kkkk成人观看| 亚洲自拍偷拍一区| 午夜免费在线观看精品视频| 中文字幕综合一区| 国产一区在线播放| 日本欧美一二三区| 亚洲国产精品免费| 国产免费观看久久黄| 欧美人在线视频| 久久九九精品99国产精品| www.色综合| 精品国产鲁一鲁一区二区张丽| 精品国产一区二区三区久久狼5月| 欧美性猛交视频| 成人欧美一区二区三区黑人孕妇| 久久久精品国产亚洲| 欧美成人午夜剧场免费观看| 91日本在线视频| 久操成人在线视频| 精品久久久久久久久久ntr影视| 午夜精品久久久久久久久久久久久| 91国语精品自产拍在线观看性色| 国产精品久久精品| 国产成人精品网站| 久久伊人免费视频| 伊人精品在线观看| 亚洲片国产一区一级在线观看| 成人免费黄色网| 国模极品一区二区三区| 中文国产亚洲喷潮| 国产精品成人一区二区| 一区二区三区动漫| 国产97在线视频| 欧美激情极品视频| 日本亚洲精品在线观看| 成人激情在线观看| 亚洲成av人乱码色午夜| 亚洲视频一区二区| 福利精品视频在线| 欧洲亚洲免费视频| 国产精品久久久久久久久影视| 久久久亚洲影院你懂的| 啪一啪鲁一鲁2019在线视频| 一区二区三区国产在线观看| 91国内免费在线视频| 日韩国产一区三区| 亚洲综合精品一区二区| 国产专区欧美专区| 国产久一一精品| 久久综合久中文字幕青草| 久国内精品在线| 欧美激情videos| 亚洲欧美日韩国产中文| 日本不卡视频在线播放| 欧美成人精品在线视频| 国产亚洲精品综合一区91| 成人中心免费视频| 日本一区二区三区在线播放| 亚洲一区二区三区成人在线视频精品| 国产精品久久久久高潮| 国产精品jizz在线观看麻豆| 精品视频在线导航| 亚洲www永久成人夜色| 久久视频这里只有精品| 亚洲男人天堂网| 91福利视频网| 国产精品极品美女在线观看免费| 亚洲小视频在线| 久久精品一区中文字幕|