久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

c++中有關自定義string的那些為什么-創新互聯

1、為什么我們要學會寫自定義string類

10年積累的成都網站建設、成都網站制作經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先做網站后付款的網站建設流程,更有福海免費網站建設讓你可以放心的選擇與我們合作。

    面試官愛考,你有辦法嗎,沒有-.-c++中 有關自定義string的那些為什么

2、自定義string類應該如何正確書寫

    quote一句c++primer中的話:

     類的安全性和處理正確性的不夠,需要類的設計者(也就是我們)去寫拷貝構造和賦值運算符重載函數,而最困難的不是如何書寫而是讓我們自己本身意識到需要這樣做。

關于MyString不得不說的就是:深淺拷貝問題,這個究其原因就是它的成員變量是個char *類型的,如果我們懶到要讓編譯器自己幫我們去建構造、拷貝構造,賦值運算符重載這些函數,那么問題就是很大滴,因為它也很lazy,它做的操作就是讓兩個指針指向同一個地方。

舉個栗子看:

c++中 有關自定義string的那些為什么

那么下面就說說如何寫一個正確的string:

    首先c++中string它是個類對吧

    那么我們就寫一個類出來(成員函數和成員變量)

class MyString
{
private:
	char *_pData;//對,你沒看錯,只需要一個char型指針就可以實現哦
public:
	//首先一個類要有構造函數-->保證類的成員變量被正確的初始化
	//第一種寫法----正確但不是最優
	MyString(char *pData=NULL)
	{
		if (pData==NULL)
		{
			_pData=new char[1];
			_pData[0]='\0';
		}
		else
		{
			_pData=new char[strlen(pData)+1];
			strcpy(_pData,pData);
		}
	}
	//第二種寫法--比第一種更優:使用初始化列表
	MyString(char *pData=NULL)
		:pData(new char[strlen(pData)+1])
	{
		strcpy(_pData,pData);
	}
	//既然在構造中進行了new那么相對的是不是要在析構中去delete?
	~MyString()
	{
		if (_pData)//這里可以直接不用判斷,think about why?
		{
			delete []_pData;
		}
	}
	//拷貝構造-----?為什么需要寫,因為成員變量是指針,如果我們不進行自己去寫
	//就會出現安全性和正確性的問題,兩個指針指向一個空間,當其中一個析構后,
	//另外一個就無法再去訪問這片空間,會出現非法操作
	//考點:形參必須傳入的是該類型的引用,不然在實參傳給形參時
	//就會發生值傳遞,進行拷貝構造,那么這個拷貝構造就是一個死循環
	//第一種寫法
	MyString(const MyString &mstr)
	{
		if (strlen(mstr._pData)==0)
		{
			_pData=new char[1];
			_pData[0]='\0';
		}
		else
		{
			_pData=new char[strlen(mstr._pData)+1];
			strcpy(_pData,mstr._pData);
		}
	}
	//第二種寫法
	MyString(const MyString &mstr)
		:_pData(new char[strlen(mstr._pData)+1])
	{
		strcpy(_pData,mstr._pData);
	}
	//第三種寫法:只有在構造和析構的時候開辟和釋放空間,內存空間不易出錯
	//不會出現MyString實例化對象的錯誤,考慮到了異常安全性
	MyString(const MyString &mstr)
		:_pData(NULL)
		//_pData沒有初始化,隨機的空間,如果不賦值為空,會delete失敗
	{
		MyString temp(mstr._pData);
		swap(temp._pData,_pData);
	}
	//賦值運算符重載
	//考點:1、返回值是該類型引用(考慮到有連等情況a=b=c)
	//考點:2、形參是const 引用(不會改變形參并且效率高)
	//第一種寫法--->缺點:如果在new char[]出錯的話,很有可能_pData就變成野指針
	//那么MyString返回的對象就是一個不正確的對象,有異常安全性問題
	MyString& operator=(const MyString &mstr)
	{
		//考點:3、自己給自己賦值的情況,有沒有考慮到!
		if (this!=&mstr)
		{
			//考點:4、先釋放,一定是釋放[]_pData,原因就是構造的方式
			delete []_pData;
			//再開辟
			_pData=new char[strlen(mstr._pData)+1];
			strcpy(_pData,mstr._pData);
		}
		return *this;
	}
	//第二種寫法
	MyString &operator=(const MyString &mstr)
	{
		//先開辟
		char *temp=new char[strlen(mstr._pData)+1];
		if (temp==NULL)
		{
			return *this;
		}
		//在釋放
		delete []_pData;
		_pData=temp;
		strcpy(_pData,mstr._pData);
		return *this;
	}
	//第三種寫法
	MyString &operator=(MyString mstr)
	{
	        swap(mstr._pData,_pData);
		return *this;
	}
	//更優寫法
	MyString &operator=(const MyString &mstr)
	{
	    if(&mstr!=this)
	    {
	        MyString temp(mstr._pData);
	        swap(temp._pData,_pData);
	    }
	    return *this;
	}
	//String對象轉換成const char*
	const char* C_str()const
	{
		return _pData;
	}
	//求字符串長度
	size_t Size()
	{
		return strlen(_pData);
	}
	//判斷是否相等
	bool operator==(const MyString &mstr)const
	{
		if (&mstr!=this)
		{
			if(!strcmp(_pData,mstr._pData))
			{
				return false;
			}
		}
		return true;
	}
	//某個字符
	char operator[](size_t pos)const
	{
		if (pos<strlen(_pData)&&pos>=0)
		{
			return _pData[pos];
		}
		else
		{
			return 0;
		}
	}
	//字符串比較
	int operator<(const MyString &mstr)const
	{
		int truth=strcmp(_pData,mstr._pData);
		if (truth>0)
		{
			return -1;
		}
		else if (truth==0)
		{
			return 0;
		}
		else
		{
			return 1;
		}
	}
	
};

創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。

網頁題目:c++中有關自定義string的那些為什么-創新互聯
分享鏈接:http://www.js-pz168.com/article42/dgojec.html

成都網站建設公司_創新互聯,為您提供虛擬主機營銷型網站建設全網營銷推廣小程序開發品牌網站建設手機網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产麻豆乱码精品一区二区三区| 色婷婷精品大在线视频| 欧美三日本三级三级在线播放| 日韩女优av电影| 亚洲视频小说图片| 久久电影网电视剧免费观看| 91色在线porny| 亚洲国产一区二区三区在线播| 91精品国产丝袜白色高跟鞋| 国产精品久久三| 麻豆成人久久精品二区三区小说| 99久久er热在这里只有精品66| 欧美在线视频二区| 日韩亚洲欧美中文三级| 一区二区在线观看av| 国产一本一道久久香蕉| 久久五月天婷婷| 欧美日韩一区不卡| 欧美激情在线观看视频免费| 秋霞国产午夜精品免费视频| 99国产视频| 欧美性色黄大片| 国产精品日韩成人| 精品一区二区三区av| 久久96国产精品久久99软件| 在线播放欧美女士性生活| 亚洲少妇30p| 国产一区二区调教| 日本高清久久一区二区三区| 日韩欧美国产不卡| 亚洲va国产va欧美va观看| 97se亚洲国产综合在线| 日本高清视频一区二区| 国产精品美女久久久久久2018| 精品午夜一区二区三区在线观看| 精品免费二区三区三区高中清不卡 | 亚洲精品视频一区| 国产精品77777| 日韩动漫在线观看| 久久久国产精品麻豆| 美女网站色91| 欧美凹凸一区二区三区视频| 日韩美女视频在线| 午夜精品久久久久久久蜜桃app| 99久久久无码国产精品| 欧美色图在线观看| 一区二区三区四区国产精品| 91麻豆蜜桃一区二区三区| 欧美日韩中文字幕一区二区| 樱花草国产18久久久久| 91蝌蚪porny九色| 欧美日韩免费一区二区三区视频| 亚洲精品美国一| 91久久大香伊蕉在人线| 欧美日韩国产在线播放网站| 亚洲午夜一区二区| 国产精品免费在线| 日韩欧美色综合| 免费久久精品视频| 日本一区二区精品视频| 欧美激情中文不卡| 成人禁用看黄a在线| 欧美日韩中文字幕一区| 午夜一区二区三区视频| 精品欧美一区二区久久久伦| 久久亚洲精华国产精华液| 国产在线看一区| 色哟哟亚洲精品| 一区二区三区 在线观看视频| 99久久精品无码一区二区毛片 | 久久av中文字幕片| 亚洲成色www久久网站| 国产精品久久久久久久久久久免费看| 成人午夜电影网站| 欧美电影影音先锋| 免费观看在线色综合| 五月天久久狠狠| 亚洲免费毛片网站| 狠狠久久综合婷婷不卡| 久久久一区二区三区| 从欧美一区二区三区| 欧美日韩中文字幕一区二区| 日本少妇一区二区| 香蕉久久夜色| 亚洲综合视频在线| 欧美日韩亚洲一区二区三区在线观看 | 国模精品一区二区三区| 精品粉嫩超白一线天av| 国产成人在线电影| 69p69国产精品| 激情小说亚洲一区| 欧美午夜精品久久久| 秋霞电影网一区二区| 在线码字幕一区| 性做久久久久久久久| 日本在线免费观看一区| 亚洲激情图片小说视频| 欧美乱偷一区二区三区在线| 亚洲日本护士毛茸茸| 久久99导航| 亚洲欧美日韩在线不卡| 蜜桃av噜噜一区二区三区| 亚洲欧洲精品一区二区精品久久久| 成人综合电影| 国产精品久久久久久久久搜平片| 国产精品久久精品视| 国产精品美女一区二区三区 | 精品综合久久久久久8888| 欧美综合天天夜夜久久| 久久国产精品色| 欧美日韩精品一区二区天天拍小说 | 欧美日韩视频在线一区二区观看视频| 成人免费在线视频| 免费av一区二区三区| 一二三四社区欧美黄| 天天综合色天天综合色hd| 午夜av一区二区| 日本韩国精品一区二区在线观看| 麻豆精品国产91久久久久久| 欧美丝袜丝交足nylons| 久久精品国产在热久久| 欧美喷潮久久久xxxxx| 国产精品影音先锋| 欧美www视频| 69堂成人精品视频免费| 国产精品乱码一区二区三区软件| 久久伦理网站| 性做久久久久久久久| 91福利国产成人精品照片| 韩国三级电影一区二区| 欧美一二三区在线观看| 97精品国产露脸对白| 国产精品嫩草影院com| 蜜桃精品久久久久久久免费影院| 亚洲综合激情网| 色综合天天性综合| 国产一区二区美女| 精品乱人伦小说| 国内视频一区| 亚洲国产欧美另类丝袜| 欧美色爱综合网| www.亚洲免费av| 国产精品美女久久久久av爽李琼 | 中文字幕在线免费不卡| 日韩欧美精品久久| 青青草成人在线观看| 欧美一级理论性理论a| 不卡视频一区二区三区| 一区二区三区四区在线播放| 91福利社在线观看| 成人性视频免费网站| 国产精品久久久久久久裸模| 日韩免费毛片| 韩国av一区二区三区四区| 精品国产一区二区三区四区四| 国产精选在线观看91| 五月天婷婷综合| 91精品午夜视频| 国产日本一区二区三区| 午夜精品一区二区三区电影天堂 | 欧美日本亚洲| 久草这里只有精品视频| 久久久综合激的五月天| 欧美午夜精品久久久久久蜜| 麻豆精品视频在线观看免费 | 成人在线综合网| 亚洲欧美激情小说另类| 欧美伊人久久久久久午夜久久久久| 成人av在线观| 一区二区三区蜜桃网| 欧美日韩国产精选| 国产精品免费一区二区三区四区| 视频一区视频二区中文字幕| 欧美大片顶级少妇| 热re99久久精品国99热蜜月| 国产一区在线看| 亚洲欧美在线aaa| 欧美三级韩国三级日本三斤| 99久久精品久久久久久ai换脸| 婷婷中文字幕一区三区| 欧美成人综合网站| 日韩av一区二区三区美女毛片| 国产美女主播视频一区| 亚洲丝袜制服诱惑| 欧美日韩视频专区在线播放| 国产精品露出视频| 美女www一区二区| 中文一区二区在线观看| 色噜噜久久综合| 超碰国产精品久久国产精品99| 日韩国产欧美三级| 国产日韩视频一区二区三区| 色综合色综合色综合色综合色综合| 波多野结衣视频一区| 午夜精品久久久久| 久久午夜免费电影| 在线视频欧美区| 国产欧美日韩伦理| 国产在线视频一区二区三区| 亚洲日本一区二区三区|