91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

string類的深淺拷貝,寫時拷貝

發布時間:2020-07-25 18:44:49 來源:網絡 閱讀:563 作者:檸檬dream 欄目:編程語言

string類的深淺拷貝,寫時拷貝

淺拷貝:多個指針指向同一塊空間,多次析構同一塊內存空間,系統會崩潰。(淺拷貝就是值拷貝)

深拷貝:給指針開辟新的空間,把內容拷貝進去,每個指針都指向自己的內存空間,析構時不會內存崩潰。

#include <iostream>
#include <string>
using namespace std;

class String
{
public:
	String(const char*str)
		:_str(new char [strlen(str)+1])
		{
			strcpy(_str,str);
		}
	//String(const String& str)   //淺拷貝
	//	:_str(str._str)
	//	{}
	//String &operator=(const String& str)  
	//{
	//	if(this!= &str)
	//	{
	//		_str = str._str;
	//	}
	//	return *this;
	//}
	String(const String& str)                //深拷貝
		:_str(new char[strlen(str._str)+1])
		{
			strcpy(_str,str._str);
		}
	String &operator=(const String& str)
	{
		if(this!=&str)
		{
			//delete[] _str;
			//_str=new char [strlen(str._str)+1];
			//strcpy(_str,str._str);
			_str=str._str;
		}
		return *this;
	}
	~String()
	{
		if(_str)
		{
			cout<<"~String()"<<endl;
			delete[] _str;
		}
	}
private:
	char*_str;
};

void TestString()
{
	String s1("hello world!");
	String s2=s1;//s2(s1)
}

int main()
{
	TestString();
	return 0;
}

寫時拷貝:會存在一個計數器,并且多個對象指向同一塊空間,每次創建一個新的對象時計數器加++,銷毀時計數器--,直到計數器count=0時析構。

class String       
{
public:
	String(const char*str)
		:_str(new char [strlen(str)+1])
		,_count(1)
		{
			strcpy(_str,str);
		}
	String(const String& str)
		:_str(str._str)
	{
		_count++;
	}
	String &operator=(const String& str)  
	{
		if(this!= &str)
		{
			_str = str._str;
		}
		return *this;
	}
	~String()
	{
		if(--_count == 0)
		{
			cout<<"~String()"<<endl;
			delete[] _str;
		}
	}
private:
	char*_str;
	int _count;
};

void Test()
{
	String s1("hello world!");
	String s2=s1;
	String s3 = s2;
}

int main()
{
	Test();
	return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遵化市| 尼勒克县| 永吉县| 淳化县| 三原县| 红河县| 阳原县| 景泰县| 阳山县| 民县| 株洲市| 启东市| 清涧县| 大丰市| 桓仁| 扶余县| 台前县| 措美县| 昔阳县| 肇源县| 沭阳县| 广丰县| 潜山县| 峡江县| 汉川市| 桃源县| 石首市| 寿光市| 渝中区| 汤阴县| 荥阳市| 吕梁市| 姚安县| 宣威市| 广丰县| 轮台县| 剑河县| 汾阳市| 德阳市| 黔南| 长乐市|