我有我的測試類來做我自己的字符串函數。我有一個複製析構函數的問題。複製構造函數調用析構函數C++
我有2個字符串:s1和s2。我調用函數s3 = s1 + s2;
它首先調用operator +函數,當它結束時調用析構函數。正因爲如此,operator =函數中的字符串對象是空的。我怎樣才能解決這個問題?
析構函數:
String::~String() {
if (this->str)
delete[] str;
str = NULL;
len = 0;
}
拷貝構造函數:
String::String(const String& string) {
this->len = string.len;
if(string.str) {
this->str = new char[string.len+1];
strcpy(this->str,string.str);
} else {
this->str = 0;
}
}
operator=
:
String & String::operator= (const String& string) {
if(this == & string)
return *this;
delete [] str;
this->len = string.len;
if(string.str) {
this->str = new char[this->len];
strcpy(this->str,string.str);
} else {
this->str = 0;
}
return *this;
}
operator+
:
String& operator+(const String& string1 ,const String& string2)
{
String s;
s.len = string1.len + string2.len;
s.str = new char[string1.len + string2.len+1];
strcpy(s.str,string1.str);
strcat(s.str,string2.str);
return s;
}
由於它的工作的=副本:d我被困在這了一點。 – marktielbeek 2013-04-23 19:17:44