拷贝构造函数和赋值构造函数的区别,不解之处。
class String
{
private:
char *data;
public:
String()
{
data = new char [10];
};
String(const String &);
String &operator = (const String &);
};
String::String(const String &rs)
{
if(this != &rs)
{
data = new char[10];
strcpy(this->data, rs.data);
}
//return *this;这行书上没有写,有必要用吗?
}
String &String::operator=(const String & rs)
{
if(this != &rs)
{
delete[]data;
data = new char[10];
strcpy(this->data, rs.data);
}
return *this;
}
int main(int argc, char* argv[])
{
String s1;
String s2(s1); //调用拷贝构造
String s3 = s1; //还是调用拷贝构造,为什么不调用赋值=
return 0;
}
通常拷贝和赋值构造函数都是一齐出现的,但感觉都是一样的代码,C++有必要这样做吗?