在書C++入門手冊中,它有一個C型字符數組的代碼,並說明如何在文章15.3運算符=中過載=
運算符。現在運算符= C++中的重載
String& String::operator=(const char *sobj)
{
// sobj is the null pointer,
if (! sobj) {
_size = 0;
delete[] _string;
_string = 0;
}
else {
_size = strlen(sobj);
delete[] _string;
_string = new char[ _size + 1 ];
strcpy(_string, sobj);
}
return *this;
}
我想知道爲什麼有需要返回參考String &
時,下面這段代碼做相同的工作,沒有任何問題:
void String::operator=(const char *sobj)
{
// sobj is the null pointer,
if (! sobj) {
_size = 0;
delete[] _string;
_string = 0;
}
else {
_size = strlen(sobj);
delete[] _string;
_string = new char[ _size + 1 ];
strcpy(_string, sobj);
}
}
- 請大家幫幫忙。
注意,在書中提出的解決方案是不例外安全(和這將會非常簡單,我不明白他們爲什麼沒有這樣做)。 – 2011-03-28 19:15:54