有课
class Cow{
char name[20];
char* hobby;
double weight;
public:
[..]
Cow & operator=(const Cow &c);
[..]
};
我想知道如何编写operator=
方法的定义。我写的定义等于 -
Cow & Cow::operator=(const Cow &c){
if(this==&c)
return *this;
delete [] hobby;
hobby=new char [strlen(c.hobby)+1];
weight=c.weight;
strncpy(name,c.name,20);
return *this;
}
但是,如果已经创建了名称[20],例如“Philip Maciejowsky”并且我对它“Adam”进行了 strncpy,该怎么办。在 operator=(...) 之后将名称等于“adamlip Maciejowsky”吗?如果它像那样覆盖如何修复它?