您的位置:首页 > Web前端

剑指offer--赋值运算符函数

2017-03-18 21:48 309 查看
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string.h>
using namespace std;

// 剑指offer
// 赋值运算符函数

class String
{
public:
// 构造函数
String(const char* str=NULL)
{
if (str != NULL)
{
_str = new char[strlen(str) + 1];
strcpy(_str, str);
}
else
{
_str = new char[1];
*_str = '\0';
}
}

// 拷贝构造函数
String(const String& s)//
//:_str(NULL)
{
String tmp(s._str);
swap(_str, tmp._str);
}

//运算符重载
String& operator=(const String& s)// 把返回类型设置成引用,支持链式连等
{									// 参数传引用,形参到实参不调拷贝构造函数,提高效率
// s不改变,加上const 修饰
if (this != &s)
{
String tmp(s);
swap(_str, tmp._str);
}
return*this;
}
//析构函数
~String()
{
if (_str!=NULL)
{
delete[] _str;
_str = NULL;
}
}
private:
char* _str;
};

void Test()
{
String s1("123");
String s2(s1);
String s3(NULL);
s3 = s2 = s1;
}
int main()
{
Test();
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 经典 String