我必須寫一個新的類成員像有靜態const成員時賦值運算符?
class A
{
static int i;
const int j;
char * str;
...
...
};
現在我想寫賦值運算符吧。
A& A::operator=(const A& rhs)
{
if(this != rhs)
{
delete [] str;
str = new char[strlen(rhs.str)+1];
strcpy(str, rhs.str);
}
return * this;
}
是不是?我將忽略靜態和常量成員(?)。
'str = new char [strlen(rhs.str)+1];'*「對不對?」 - 不,它不是,'std :: string '是。 –
我可能會建議[複製和交換成語](http://stackoverflow.com/a/3279550/201270)爲assigment運算符更好的異常安全?此外:使用'char *'而不是'std :: string'的任何緊迫原因?如果不是,我會強烈建議使用它。如果您需要'char *':與手動內存管理相比,智能指針幾乎總是更好的選擇。 – Grizzly