我必须写一个新的类成员像有静态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