您的位置:首页 > 其它

引用计数

2016-04-10 10:28 288 查看
#include<iostream>

using namespace std;

class String

{

public:

String(const char* str)

:_str(new char[strlen(str)+1])

{

strcpy(_str,str);

_refcount = new int(1);

}

~String()

{

if(--_refcount[0] == 0 && _str != NULL)

{

delete []_refcount;

delete[] _str;

}

}

String(const String& s)

:_str(s._str)

,_refcount(s._refcount)

{

++_refcount[0];

}

String& operator=(const String& s)

{

if(this != &s)

{

_str = s._str;

_refcount = s._refcount;

++_refcount[0];

}

return *this;

}

public:

char* _str;

int* _refcount;//引用计数

};

int main()

{

String s1("abcd");

String s2(s1);

String s3 = s1;

s3 = s2;

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: