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

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

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

2019-11-06 06:17:27
字體:
來源:轉載
供稿:網(wǎng)友

21:知識點:判斷一個類是否需要拷貝控制函數(shù)成員,首先判斷其是否需要自定義版本的析構函數(shù),如果需要,則拷貝控制成員函數(shù)都需要。由于這兩個類中的指針為智能指針,可以自動控制內(nèi)存的釋放,所以使用類的合成析構函數(shù)即可。另外類默認的拷貝控制成員對于智能指針的拷貝也不需要自定義版本來修改,所以全部定義為 =default 即可

22:知識點1:管理類外資源的類必須定義拷貝控制成員

知識點2:為了定義拷貝控制成員,我們可以定義拷貝操作,使得類的行為看起來像是一個值或者一個指針

知識點3:類的行為像一個值,拷貝發(fā)生時,副本和原對象是完全獨立的,改變副本不會對原對象產(chǎn)生影響

知識點4:類的行為像一個指針,拷貝發(fā)生時,副本和原對象共用底層數(shù)據(jù),改變副本也會改變原對象

知識點5:標準庫容器和string類就是像值的類,shared_ptr類就是像指針的類,IO類和unique_ptr不允許拷貝和賦值,所以都不是

class Hasptr{public:	Hasptr();//默認構造函數(shù)	//拷貝構造函數(shù),完成string 指針指向內(nèi)容的拷貝和i值的拷貝	Hasptr(const Hasptr& p):ps(new string(*p.ps)),i(p.i){}	//拷貝賦值運算符	Hasptr& Operator= (const Hasptr& p)	{		auto new_ps = new string(p.ps);		delete ps;		ps = new_ps;		return *this;	}	//析構函數(shù)	~Hasptr(){delete ps;}PRivate:	string *ps;	int i;};

23:知識點1:類值版本,類的構造函數(shù)需要可能需要動態(tài)分配其成員的副本

知識點2:類值版本,類的拷貝賦值運算符相當于結合了構造函數(shù)和析構函數(shù)的操作,首先銷毀左側運算對象的資源,再從右側運算符對象拷貝資源,注意順序

知識點3:由于有上述的順序存在,所以我們必須保證這樣的拷貝賦值運算符是正確的:首先將右側運算對象拷貝到一個臨時的對象中,再銷毀左側的運算對象的現(xiàn)有成員,之后將臨時對象中的數(shù)據(jù)成員拷貝至左側對象中(防范自賦值的情況發(fā)生—首先就銷毀了自身的成員,再進行拷貝自身則會訪問到已經(jīng)釋放的內(nèi)存中)

見22題,編寫時忘了一個析構函數(shù),ps在構造函數(shù)中是動態(tài)分配的內(nèi)存,所以需要進行delete

24:未定義析構函數(shù),ps在使用結束后不會被合成版本的析構函數(shù)釋放,造成內(nèi)存泄漏。未定義拷貝構造函數(shù),使用自定義版本的拷貝構造函數(shù),對于ps的拷貝就會是指針本身的拷貝。

25:動態(tài)分配的內(nèi)存由shared_ptr管理,析構函數(shù)之后會自動判斷進行釋放,所以不需要自定義版本的析構函數(shù)。

26:知識點1:定義行為像指針的類,在不想使用shared_ptr的情況下我們可以使用引用計數(shù)來確定是否釋放內(nèi)存

知識點2:每個構造函數(shù)(拷貝構造函數(shù)除外)都創(chuàng)建一個引用計數(shù),記錄對象的共享狀態(tài),第一次被新建時,計數(shù)為1

知識點3:析構函數(shù)遞減引用計數(shù),拷貝賦值運算符遞增右側對象的引用計數(shù),遞減左側的,當左側的引用計數(shù)為0時,拷貝賦值運算符就必須銷毀狀態(tài)

知識點4:計數(shù)器不能直接作為類對象的成員,否則在拷貝中,會出現(xiàn)歧義,我們可以將計數(shù)器保存在動態(tài)內(nèi)存中,只定義一個指向計數(shù)器的指針,這樣拷貝或者賦值時,我們拷貝該指針,副本和原對象指向同樣的計數(shù)器

class Hasptr1{public:	//構造函數(shù),初始化相關成員	Hasptr1(const string& s = string()):ps(new string(s)),i(0),use(new size_t(1)){}	//拷貝構造函數(shù),將引用計數(shù)也拷貝過來,并且遞增引用計數(shù)	Hasptr1(const Hasptr1& p):ps(p.ps),i(p.i),use(p.use){++*use;}	//拷貝賦值運算符	Hasptr1& operator= (const Hasptr1& p1)	{		++*p1.use;//首先遞增右側運算符對象的引用計數(shù)		if (--*use == 0)//遞減本對象的引用計數(shù),若沒有其他用戶,則釋放本對象的成員		{			delete ps;			delete use;		}		ps = p1.ps;//進行拷貝		use = p1.use;		i = p1.i;		return *this;	}	//析構函數(shù)	~Hasptr1()	{		if (*use == 0)//引用計數(shù)變?yōu)?,說明已經(jīng)沒有對象再需要這塊內(nèi)存,進行釋放內(nèi)存操作		{			delete ps;			delete use;		}	}private:	//定義為指針,是我們想將該string對象保存在動態(tài)內(nèi)存中	string *ps;	size_t *use;//將計數(shù)器的引用保存	int i;};

28:(a)類似于27題   (b)只有一個指針成員,參照27題

29:知識點1:如果一個類定義了自己的swap,那么算法將利用類自己的版本(重排順序等算法)

知識點2:自定義版本的swap存在的必要性:我們不希望進行新的內(nèi)存分配,只希望將其指針進行拷貝賦值(交換的本質(zhì)),省去不必要的內(nèi)存分配,將函數(shù)定義為friend,以便訪問private成員

知識點3:相對于拷貝控制成員,swap并不是不要的,但是對于那些分配了資源的類,定義swap可能是一種很重要的優(yōu)化手段

知識點4:swap函數(shù)自定義版本與std中版本的重合問題:對于swap函數(shù),其調(diào)用應該都是不加限定的,若加std::swap則調(diào)用的是標準庫的版本,而標準庫的版本在一定程度上是為了那些內(nèi)置類型沒有自定義版本的swap而準備的,若一個類有其自定義版本的swap函數(shù),則我們就不應該使用std版本的。所以我們只要在前加上using std::swap聲明,即可,在使用中,若有類特定的swap,其匹配程度則會優(yōu)于std中的版本(616頁有詳解)

知識點5:在賦值運算符中使用swap,以傳值的方式傳入新對象,再進行拷貝賦值,在一定程度上會比較安全

見知識點4,因為其調(diào)用到最后使用的是std中的swap,不存在循環(huán)

30:

class Hasptr{	friend void swap(Hasptr&,Hasptr&);public:	Hasptr();//默認構造函數(shù)	//拷貝構造函數(shù),完成string 指針指向內(nèi)容的拷貝和i值的拷貝	Hasptr(const Hasptr& p):ps(new string(*p.ps)),i(p.i){}	//拷貝賦值運算符	Hasptr& operator= (const Hasptr& p)	{		auto new_ps = new string(*p.ps);		delete ps;		ps = new_ps;		return *this;	}	//析構函數(shù)	~Hasptr(){delete ps;}private:	string *ps;	int i;};inline void swap(Hasptr& a,Hasptr& b){	using std::swap;	swap(a.ps,b.ps);	std::swap(a.i,b.i);	cout<<"123";}


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

圖片精選

亚洲一区视频在线观看视频| www.就去干.com| 欧美成熟毛茸茸复古| 欧美r级电影在线观看| 好吊视频一区二区三区四区| 99久久精品日本一区二区免费| 水蜜桃一区二区| 日本一区二区三区四区| 韩国v欧美v日本v亚洲v| 五月久久久综合一区二区小说| 日韩视频久久| 图片区偷拍区小说区| 国产sm在线观看| 精品久久久网| 国产九九精品视频| 国产欧美日韩视频| 国产精品夜色7777狼人| 国产成人精品777777| 中国人与牲禽动交精品| 亚洲网址你懂得| 激情小说亚洲图片| 不卡视频一二三四| 免费观影入口看日本视频| 国产高清在线a视频大全| www.com在线观看| 国产伊人精品| 亚洲一区在线日韩在线深爱| 国产精品丝袜久久久久久消防器材| 免费观看成年在线视频网站| 色av一区二区三区| 亚洲欧洲美洲综合色网| 亚洲国产高清在线观看视频| 欧美乱强性伦xxxxx| 91av网站在线播放| 成人羞羞视频免费看看| 一区二区三国产精华液| 友田真希在线| 九九九九九九精品| 国产熟人av一二三区| 国产精品国产亚洲精品看不卡| www.三级.com| 幼a在线观看| 三上悠亚在线免费观看| 成人avav在线| 国产一级爱c视频| 爱情电影社保片一区| 欧美日本在线视频中文字字幕| 日本高清成人vr专区| 91精品国产91久久久久青草| 国产精品无码av无码| 视频二区欧美毛片免费观看| 91精品在线观看视频| 国产xxxx孕妇| 欧美成人午夜精品免费| 婷婷激情5月天| 久久99久久99精品蜜柚传媒| 在线观看xxx| 成人精品久久一区二区三区| www精品国产| 欧美日韩国产一级二级| 色偷偷88888欧美精品久久久| 亚洲精品久久久久久下一站| 污香蕉视频在线观看| 成人久久久久久| 国产私拍一区| 国产99久久久国产精品免费看| 亚洲图片88| 中文字幕三级电影| 久久免费精品视频在这里| 欧美国产亚洲另类动漫| 国产精品第一页第二页第三页| 国产欧美综合精品一区二区| 97视频在线观看亚洲| 欧美成人bangbros| 日韩av电影免费在线观看| 成人av免费播放| 国产精品草草| eeuss影院网站免费观看| 欧美成人一级视频| 亚洲不卡视频在线观看| 亚洲精品精品亚洲| 免费不卡视频| 青青草手机在线| 亚洲区成人777777精品| 亚洲少妇中文字幕| 亚洲女同二女同志奶水| 日韩精品一页| 精品久久久视频| 天天射,天天干| 色婷婷综合久久久久中文| 91在线视频免费看| avtt天堂在线| 免费久久久一本精品久久区| 欧美福利视频导航| 国产美女高潮视频| 久久久久久久免费视频了| 成人满18在线观看网站免费| 成人区精品一区二区| 五月综合激情在线| 国产麻豆综合视频在线观看| 久久精品视频16| 一本久道久久综合无码中文| 欧美视频完全免费看| 精品国产中文字幕第一页| 亚洲日本在线看| 91视频观看| 九一在线免费观看| 手机看片久久| 日韩国产高清视频在线| 国产精品成人久久电影| 欧美视频日韩视频| 精品精品国产高清一毛片一天堂| 91嫩草免费看| 国产视频一二三区| 亚洲欧洲自拍偷拍| 91免费的视频在线播放| 26uuu亚洲婷婷狠狠天堂| 亚洲午夜免费电影| 国产精品久久久久久久久影视| 国外亚洲成av人片在线观看| 欧美xxxxbb| 成人在线影视| 美女100%一区| 99热精品久久| 亚洲午夜国产一区99re久久| 国产精品av在线播放| 91九色porn| 成人亚洲欧美一区二区三区| 狠狠色丁香久久婷婷综| 最近2018年手机中文在线| 久久久久久久久综合| 久久综合成人网| 高清欧美性猛交xxxx黑人猛| 黄色视屏免费在线观看| 91嫩草亚洲精品| 日韩午夜电影免费看| 波多野结衣在线观看一区二区三区| 中文字幕av免费专区久久| 国产伦精品一区二区三区精品| 欧美日韩国产精品成人| 久热这里只有精品6| 国产视频在线观看一区二区| 奇米777四色影视在线看| 在线免费高清一区二区三区| 91高清在线观看视频| 黑色丝袜福利片av久久| 免费看国产一级片| 亚洲理伦在线| 国产欧美一级| 免费在线观看黄色小视频| 日本午夜一区二区| 天堂а√在线中文在线鲁大师| 国产短剧电视剧免费观看| 91在线看片| 国产黄色片免费看| a毛片在线播放| 在线视频一二三区| 久久99久久精品欧美| 国产精品久久婷婷六月丁香| 亚洲日本va在线观看| 免费人成网ww777kkk手机| 精品国产精品| 樱花草在线观看www| 丰满放荡岳乱妇91ww| 青青草成人免费视频| 日日噜噜噜噜人人爽亚洲精品| 国产传媒欧美日韩成人精品大片| 19j韩国主播韩宝贝在线| 男女作爱免费网站| 国产亚洲精品美女久久久| 亚洲乱色熟女一区二区三区| 色爱av美腿丝袜综合粉嫩av| 一二三区视频在线观看| 一区二区三区免费观看| 另类图片综合电影| 91视频91自| 久久免费视频观看| 夜夜嗨aⅴ一区二区三区| 欧美成人性生活视频| 亚洲国产精品久久精品怡红院| 韩国黄色一级片| 欧美日一区二区| 91好色先生tv| 日日骚一区二区网站| 欧美日韩在线视频免费播放| 亚洲精品理论电影| 亚洲激情成人| 日韩综合av| 亚洲精品精品亚洲| 亚洲人成五月天| 欧洲av一区二区三区| 一色屋免费视频| 伊人久久99| 亚洲天堂av在线播放| www.国产精品| 中文字幕欧美人妻精品一区蜜臀| 日韩性生活视频| 6080yy午夜一二三区久久| 天堂网www在线中文天堂| 国产成人在线网站| 日韩黄色影视| 视频一区欧美| 成人乱码一区二区三区| 一本久久a久久精品亚洲| 99re在线视频观看| 免费在线黄色片| 99久久伊人精品| 久久99热99| 精品久久久91| 日韩av密桃| 亚洲男人的天堂在线观看| 国产传媒日韩欧美成人| 大菠萝精品导航| 中文综合在线观看| 狠狠干天天爱| 日韩一区二区免费电影| 欧美国产成人精品一区二区三区| 久久精品首页| 日韩精品五月天| 欧美成人猛片aaaaaaa| 影音国产精品| 日本激情免费| 国内自拍一区| 欧美性极品少妇| 日本熟妇毛耸耸xxxxxx| 少妇av片在线观看| 国产一区你懂的| 大黑人xxx| av黄色在线免费观看| 日日操免费视频| 国产精品一区二区a| 天堂资源最新版在线视频观看免费网| 亚洲午夜免费| 98精品在线视频| 国产一区二区三区福利| 999在线观看视频| 日韩精品专区在线| 在线永久看片免费的视频| 丰满岳乱妇一区二区三区| 55av亚洲| 欧美性69xxxx肥| 一区二区三区电影大全| 精品国产无码一区二区| 国产精品99久久不卡二区| a在线视频观看| 欧美www视频在线观看| 国产日韩一区欧美| 日本电影一区二区三区| 欧美wwwwxxxx| 免费在线黄色片| 美女av一区二区三区| 国产亚洲成精品久久| 日本成人中文字幕在线视频| 国产精品久久乐| 一本在线高清不卡dvd| 日本福利一区二区| 日韩在线一区二区| 日韩综合精品| 欧美精品videosex极品1| 水蜜桃在线免费观看| 91豆花视频在线播放| 精品成人免费观看| 欧洲在线/亚洲| 黄色录像一级片| 亚洲黑人在线| 国产高清免费观看| 国产乱色国产精品免费视频| 成人无遮挡免费网站视频在线观看| 先锋影音av网站| 韩日中文字幕第一页| 91在线公开视频| 日韩欧美中文字幕视频| 欧美自拍偷拍第一页| 激情图片小说一区| 黄色免费高清视频| 国产精品专区第二| 黄网站在线播放| 91成年人网站| 色琪琪久久se色| 青春草国产视频| 久久久9色精品国产一区二区三区| 自产国语精品视频| 国产丰满果冻videossex| 欧美国产日本在线| 亚洲精品精品一区| 成年人av电影| 日本老熟俱乐部h0930| 日本十八禁视频无遮挡| 精品孕妇一区二区三区| 麻豆成人av| 最新中文字幕av| 国产成人三级一区二区在线观看一| 中国特级黄色片| gogo高清午夜人体在线| 亚洲一区 欧美| 久久久久久久久久久国产精品| sm久久捆绑调教精品一区| 性猛交ⅹ×××乱大交| 国产欧美一区二区| 精品国产一区二区在线| 欧美三级三级三级| 91 com成人网| 日韩www在线| 91精品国产丝袜白色高跟鞋| 国产成免费视频| 国产精品电影久久久久电影网| 日韩一区二区福利| 91精品国产91久久久久久一区二区| 欧美一区在线观看视频| 国产吞精囗交久久久| 奇米影视777在线欧美电影观看| 亚洲午夜黄色| 久久最新资源网| 极品美女销魂一区二区三区免费| 第一福利在线| av大片在线播放| 日本精品另类| 免费美女久久99| 欧美偷拍综合| 国产欧美一区二区三区不卡高清| 精品一区二区三区在线观看国产| 国产成人在线观看| 国产综合在线观看| 欧美一区二区三区爽大粗免费| 欧美成人久久久免费播放| 91社区视频在线观看| 中文字幕高清在线免费播放| 中文字幕一区免费|