您的位置:首页 > 编程语言 > C语言/C++

【C++】深拷贝

2015-09-19 14:54 288 查看
<span style="font-size:18px;">#include<iostream>
using namespace std;
class String
{
public:
//无参构造函数
String()
:_ptr(new char[1])
{
_ptr[0] = '\0';
}
//有参构造函数
String(char* ptr)
:_ptr(new char[strlen(ptr)+1])
{
strcpy(_ptr, ptr);
}
//交换函数,主要用来优化代码
void Swap(String& s)
{
char* tmp = s._ptr;
s._ptr = _ptr;
_ptr = tmp;
}
//析构函数
~String()
{
delete[] _ptr;
}
//拷贝复制函数
String(const String& s)
:_ptr(NULL)
{
String tmp(s._ptr);
Swap(tmp);
}
//赋值操作符的重载
String& operator=(const String& s)
{
if (this != &s)
{
String tmp(s._ptr);
Swap(tmp);
}
return *this;
}
void Print()
{
cout << _ptr << endl;
}

private:
char* _ptr;
};
int main()
{
String s1="abcd";
String s2(s1);
String s3;
s3 = s1;
s1.Print();
s2.Print();
s3.Print();
return 0;
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: