老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

深拷貝以及引用計數-創新互聯

#define _CRT_SECURE_NO_WARNINGS 
 
#include 
using namespace std;
#include 
//深拷貝
class String
{
public:
String(const char* pData)
: _pData(new char[strlen(pData) + 1])
{
strcpy(_pData, pData);
}
 
String(const String& s)//拷貝構造,深拷貝,指針傳遞
: _pData(NULL)
{
String temp(s._pData);
std::swap(_pData, temp._pData);
}
 
String& operator=(String s)//賦值運算符重載,深拷貝,值傳遞
{
std::swap(_pData, s._pData);
return *this;
}
~String()
{
if (NULL != _pData)
{
delete[] _pData;
_pData = NULL;
}
}
private:
char* _pData;
};//深拷貝


//引用計數
namespace COW
{
class String
{
public:
String(const char* pData)
: _pData(new char[strlen(pData) + 1])
, _refCount(new int)
{
*_refCount = 1;
strcpy(_pData, pData);
}
 
// String s2(s1);
String(String& s)//s1和s2共用
: _pData(s._pData)//指向同一空間
, _refCount(s._refCount)//共用同一段引用計數
{
++(*_refCount);
}
 
// s1 = s2;
String& operator=(String s)
{
if (this != &s)
{
if (--(*_refCount) == 0)//檢查這塊空間是否只有自己使用
{
delete[] _pData;
delete _refCount;//檢測完釋放歸還操作系統
}
 
_pData = s._pData;//再指向另一塊空間
_refCount = s._refCount;
++(*_refCount);
}
 
return *this;
}
 
~String()
{
if (--(*_refCount) == 0)
{
delete[] _pData;
delete _refCount;
}
}
 
private:
char* _pData;
int* _refCount;
};
}
//優化引用計數
class String
{
public:
	String(const char* pData)
		: _pData(new char[strlen(pData) + 5])
	{
		*((int*)_pData) = 1;
		_pData += 4;  // _pData = _pData + sizeof(char)*4;
		strcpy(_pData, pData);
		
	}

	// s2(s1);
	String(const String& s)
		: _pData(s._pData)
	{
		++GetRef();
		strcpy(_pData, s._pData);
	}

	// s2 = s3;
	String& operator=(const String& s)
	{
		if (this != &s)
		{
			if (--GetRef() == 0)
			{
				delete[](_pData - 4);
			}

			_pData = s._pData;
			++GetRef();
		}
		return *this;
	}

	~String()
	{
		if (--GetRef() == 0)
		{
			delete[](_pData - 4);
		}
	}

private:
	int& GetRef()
	{
		return (*((int*)(_pData - 4)));
	}
private:
	char*_pData;
};
 
測試引用計數和深拷貝所用時間
class Time
{
public:
Time()
{
begin = GetTickCount();
}
 
~Time()
{
int end = GetTickCount();
cout << "end - begin = " << end - begin << endl;
}
 
private:
int begin;
};
 
 
void FunTest()
{
Time t;
COW::String s1("12345");//引用計數
COW::String s2(s1);
 
 for (int iIdx = 0; iIdx < 1000000; ++iIdx)
 {
 s1 = s2;
 }
}
 
 
 
void FunTest2()
{
Time t;
 
String s1("123456789");
String s2("2345678");
for (int iIdx = 0; iIdx < 1000000; ++iIdx)
{
s1 = s2;
}
}
int main()
{
FunTest();
FunTest2();
system("pause");
return 0;
}

創新互聯建站是一家專業提供鹿邑企業網站建設,專注與成都網站制作、成都網站建設、外貿營銷網站建設成都h5網站建設、小程序制作等業務。10年已為鹿邑眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


標題名稱:深拷貝以及引用計數-創新互聯
標題網址:http://www.xueling.net.cn/article/cciejh.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 国产在线拍偷自揄拍无码 | 日本高清视频免费在线观看 | 免费观看一次性A片 | 毛片大全 | 黄色网址免费在线播放 | 六度影院鲁鲁片在线看 | 91看片资源 | 国产日产欧产精品精品郁金香 | 老司机深夜福利视频 | 无码欧精品亜州日韩一区夜夜嗨 | 久久免费精彩视频 | 69xxxx国产| 国产精品久久久久7777按摩 | 国产在线视频主播区 | 日本免费极度色诱福利视频 | 国产精品久久久尹人香蕉 | 国产91色欲麻豆精品一区二区 | 亚洲熟女乱色综合亚洲小说 | 丁香婷婷激情俺也去俺来也 | 婷婷成人基地 | 国产肥臀一区二区福利视频 | av免费观看在线观看 | 国产精品国语版在线观看 | gogogo高清在线观看中文版二 | 国产在线看片无码人精品 | 亚洲成本人片无码免费 | 欧美xxxx做受欧美gaybdsm 久久精品国产午夜做受体验区 | 97理论三级九七午夜在线观看 | 亚洲精品影片 | 久久九九国产精品 | 免费无码国产欧美久久18 | 妓女av导航福利 | 一级一片免费看 | 性欧美video高清 | 成人亚洲免费视频 | 亚洲乱码一区二区三区三上悠亚 | 久久免费精品国自产拍网站 | 91精品一区二区三区在线 | av观看成片免费网站 | 蜜桃视频在线观看一区 | 韩国18禁男男黄网站 |