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

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

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

2019-11-06 07:22:49
字體:
來源:轉載
供稿:網友

11:知識點1:理解變量的銷毀與其內存的釋放之間的關系:內置類型的指針在離開作用域時,本身會被銷毀,但是其指向的內存空間什么都不會發生,必須以顯式的delete進行釋放空間。智能指針在離開作用域時,本身也會被銷毀,并且計數器減一,當其計數器為0且只有一個智能指針指向該對象時,該對象的內存空間會被釋放。如若用智能指針的get()函數得到的一個內置指針來初始化一個臨時的智能指針,一旦該內置指針被釋放,指向的內存也會被釋放,原來的智能指針就會變成空指針

知識點2:永遠不要用get初始化另一個智能指針或是給智能指針賦值

此題:利用P的get()函數得到的內置指針來初始化一個臨時的智能指針,一旦調用結束,該臨時指針被銷毀,內置指針所指對象內存會被釋放,使得p變為空懸指針

12:知識點1:將一個新的指針賦給shared_ptr:利用reset()函數,會更新計數。

此題:p為普通的內置指針指向一個動態內存,sp為智能指針指向一個動態內存

(a):合法,處理sp指針所指向內容,賦值的方式傳遞參數,處理完畢后內存不會被釋放

(b):不合法,參數必須是智能指針int類型

(c):同上

(d):合法,處理完畢后內存會被釋放

13:刪除p之后,會導致p指向的內存被釋放,此時sp就會變成空懸指針,在sp指針被銷毀時,該塊內存會被二次delete,執行后產生錯誤:double free

14:知識點1:如果在new和delete之間發生了異常,且異常未被捕獲,則該內存就永遠不會被釋放!(非常危險?。?!),而智能指針只要離開作用域,計數器減一,則隨著智能指針被銷毀,該塊內存也會被釋放,這就說明在實際使用過程中應使用shared_ptr來防止內存泄漏

知識點2:正確的使用智能指針:

1:不使用相同的內置指針值初始化多個智能指針

2:不delete get()返回的指針

3:不使用get()初始化或reset另一個只能指針

4:當你使用的智能指針管理的資源布氏new分配的內存,記住傳遞一個刪除器

15:直接將刪除器函數修改即可

[](connection *p){ disconnect *p; }

16:知識點1:unique_ptr擁有其所指向的對象,屬于一一對應關系,unique_ptr被銷毀時,其對象也會被銷毀,unique_ptr不支持拷貝和賦值,必須采用直接初始化的方式,當我們定義一個unique_ptr時,必須將其綁定到一個new返回的指針上

知識點2:可以使用release():放棄對指針的控制權,返回指針,并將其置為空,和reset():如果提供了內置指針q,令u指向這個對象,否則將u置空,將指針的所有權轉移,但并沒有釋放內存

知識點3:在unique_ptr快要被銷毀時,可以進行拷貝:返回unique_ptr指針,這是一種特殊的拷貝P473頁

出現的問題:一一對應的關系,其指向的對象是其類的私有成員

 error C2248: “std::unique_ptr<_Ty>::unique_ptr”: 無法訪問 PRivate 成員(在“std::unique_ptr<_Ty>”類中聲明)

17:

(a):不合法,ix不是new返回的指針

(b):同上

(c):不合法,unique_ptr必須采用直接初始化

(d):不合法,同(a)

(e):合法

(f):合法,但是p5被銷毀后,p2所指向的內存也會被銷毀,使得p2成為空懸指針

18:release()函數的作用就是放棄對指針指向對象的控制權,但shared_ptr是多對一的關系,其他的智能指針仍然可以刪除這個對象,所以這個函數的話對shared_ptr沒意義

19:知識點1:weak_ptr:不控制所指向對象生命周期的智能指針,使用時必須進行判斷對象是否存在

shared_ptr<int> u(new int(1024));weak_ptr<int> w_ptr(u);if (shared_ptr<int> u = w_ptr.lock()){	//....}

若weak_ptr指向的內容存在,則lock()返回一個指向共享對象的shared_ptr,若無,則返回空shared_ptr

這樣的類定義應該放在頭文件中

class StrBlob{public:	friend class StrBlobPtr;//聲明friend	StrBlobPtr begin();	StrBlobPtr end();	StrBlob();//默認構造函數	StrBlob(initializer_list<string> il):data(make_shared<vector<string>>(il)){}///C++11新特性	StrBlob(string il):data(make_shared<vector<string>> (il)){}//另一構造函數	typedef vector<string>::size_type size_type;//定義類型別名,方便使用	//定義函數,返回大小	size_type size() const	{		return data->size();	}	//判斷vector<string>是否為空	bool empty()	{		return data->empty();	}	//向vector<string>中加入元素	void pushback(const string &s)	{		data->push_back(s);	}	//訪問函數,應首先調用check()	string& front()	{		check(0,"front on empty StrBlob");		return data->front();	}	string& back()	{		check(0,"back on empty StrBlob");		return data->back();	}	void popback()	{		check(0,"pop_back on empty StrBlob");		data->pop_back();	}private:	shared_ptr<vector<string>> data;//指向vector<string>的智能指針	void check(size_type i,const string &msg) const//若訪問元素的大小大于data的size,輸出錯誤信息	{		if (i > data->size())		{			throw out_of_range(msg);//拋出該out_of_range異常,表示不在范圍之內		}	}};class StrBlobPtr{public:	StrBlobPtr():curr(0){}//構造函數,將curr設定為0	StrBlobPtr(StrBlob &a, size_t sz = 0):wptr(a.data),curr(sz){}//構造函數,將StrBlob的智能指針與此類中的weak_ptr綁定	string& deref() const	{		auto p =check(curr,"deference past end");		return (*p)[curr];	}	StrBlobPtr& incr()	{		auto p =check(curr,"deference past end");		++curr;		return *this;	}private:	shared_ptr<vector<string>> check(size_t i,const string& msg) const//檢查函數,返回一個vector<string>的智能指針	{		auto ret = wptr.lock();//檢查對象是否還存在		if(!ret)		{			throw runtime_error("未綁定");		}		if (i >= ret->size())		{			throw out_of_range(msg);		}		return ret;	}	weak_ptr<vector<string>> wptr;//定義弱智能指針	size_t curr;//設立游標,表示下標};StrBlobPtr StrBlob::begin(){	return StrBlobPtr(*this);}StrBlobPtr StrBlob::end(){	return StrBlobPtr(*this, data->size());}

20:

#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<Chapter12.h>using namespace std;int main(int argc, char**argv)  { 	ifstream in("1.txt");	string s;	StrBlob blob;	while (getline(in,s))	{		blob.pushback(s);	}	for (StrBlobPtr pbeg(blob.begin()), pend(blob.end()); pbeg != pend;		pbeg.incr())		cout << pbeg.deref() << std::endl;	return 0;}  


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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品三级视频福利| 欧美精品中文字幕一区| 亚洲精品国产精品国自产观看浪潮| 久久色在线播放| 亚洲精品国产精品国自产在线| 成人午夜黄色影院| 日韩欧美在线第一页| 国产精品情侣自拍| 亚洲免费中文字幕| 国产日韩欧美中文| 日韩精品有码在线观看| 日韩麻豆第一页| 一区国产精品视频| 欧美一级淫片aaaaaaa视频| 久久久久久网站| 国产精品69av| 久久91超碰青草是什么| 亚洲成人在线网| 九九热精品视频国产| 伊人久久久久久久久久| 亚洲欧美一区二区三区情侣bbw| 91av网站在线播放| 国产精品99久久久久久人| 国产综合在线观看视频| 亚洲第一网中文字幕| 97热在线精品视频在线观看| 日韩在线观看你懂的| 中文字幕亚洲综合久久筱田步美| 亚洲欧洲高清在线| 亚洲国产欧美精品| 日韩免费观看av| 亚洲精品美女久久| 97高清免费视频| 亚洲肉体裸体xxxx137| 少妇高潮久久久久久潘金莲| 欧美性视频网站| 亚洲人成网站免费播放| 久热在线中文字幕色999舞| 精品性高朝久久久久久久| 国产精品777| 国产精品wwww| 久久青草福利网站| 国产精品偷伦一区二区| 久久精品青青大伊人av| 一个人www欧美| 97久久超碰福利国产精品…| 亚洲精品白浆高清久久久久久| 韩国精品久久久999| 欧美有码在线观看视频| 亚洲视频777| 国产精品中文久久久久久久| 亚洲影院色在线观看免费| 日韩一区二区三区国产| 亚洲一区二区三区sesese| 精品美女永久免费视频| 日韩女优在线播放| 一区二区欧美亚洲| 红桃视频成人在线观看| 欧美午夜宅男影院在线观看| 国产成人在线一区二区| 亚洲视屏在线播放| 中文字幕日韩欧美在线| 欧美黑人xxxx| 国产成人精品久久| 亚洲曰本av电影| 亚洲国产精品va在线看黑人| 欧美精品在线极品| 久久欧美在线电影| 一区二区三区视频观看| 538国产精品视频一区二区| 正在播放国产一区| 日韩高清a**址| 国产日韩中文在线| 欧美日本啪啪无遮挡网站| 久青草国产97香蕉在线视频| 欧美一级片免费在线| 亚洲高清色综合| 国产精品一区二区三区免费视频| 欧美激情欧美激情| 欧美成年人在线观看| 日韩欧美在线中文字幕| 精品国产一区二区三区久久狼黑人| 国产69久久精品成人看| 欧美日韩国产丝袜美女| 国产99视频精品免视看7| 久久久久久国产精品| 伊人精品在线观看| 亚洲国产美女久久久久| 国产亚洲精品美女久久久| 欧美性xxxx极品hd欧美风情| 亚洲丝袜在线视频| 最近的2019中文字幕免费一页| 九九久久国产精品| 性色av一区二区咪爱| 亚洲欧洲黄色网| 欧美又大粗又爽又黄大片视频| 国产欧美一区二区三区久久人妖| 欧美精品videos| 日韩av中文在线| 欧美视频在线观看 亚洲欧| 欧美一级片久久久久久久| 欧美激情精品久久久久久免费印度| 色婷婷av一区二区三区久久| 91国产高清在线| 亚洲男人av电影| 日韩精品视频三区| 亚洲第五色综合网| 91免费在线视频网站| 4444欧美成人kkkk| 国产精品久久久久久久一区探花| 97精品视频在线| 日韩极品精品视频免费观看| 亚洲欧美中文在线视频| 在线观看日韩av| 日韩电影在线观看免费| 全球成人中文在线| 日韩在线一区二区三区免费视频| 久久91精品国产| 亚洲激情视频网站| 8050国产精品久久久久久| 中文字幕国产精品| 日韩av一卡二卡| 精品偷拍各种wc美女嘘嘘| 91精品久久久久久久| 日韩精品视频免费专区在线播放| 国产精品www| 亚洲黄色成人网| 亚洲三级免费看| 色七七影院综合| 亚洲国产高清自拍| 欧美日韩国产综合新一区| 欧美日韩裸体免费视频| 亚洲国产欧美日韩精品| 91网站在线免费观看| 色综合老司机第九色激情| 国产欧美一区二区三区视频| 日产精品99久久久久久| 国产精品日韩一区| 国产91在线高潮白浆在线观看| 国产精品高潮呻吟久久av黑人| 羞羞色国产精品| 中文字幕精品www乱入免费视频| 亚洲自拍偷拍区| 亚洲国产精品电影| 最近2019年好看中文字幕视频| 成人深夜直播免费观看| 亚洲第一区中文字幕| 日本aⅴ大伊香蕉精品视频| 中文字幕精品一区久久久久| 国产成+人+综合+亚洲欧洲| 亚洲图片欧美午夜| 欧美精品在线网站| 色偷偷88888欧美精品久久久| 色多多国产成人永久免费网站| 欧美精品久久久久久久免费观看| 狠狠躁18三区二区一区| 久久成年人免费电影| 久久久久免费精品国产| 欧美激情在线视频二区| 欧美极品少妇xxxxⅹ裸体艺术| 久久99热这里只有精品国产| 久久久亚洲国产天美传媒修理工| 日韩欧美在线视频| 国产免费一区二区三区在线能观看|