【发布时间】:2013-03-08 23:20:25
【问题描述】:
有课
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”进行了字符串处理,该怎么办。在 operator=(...) 之后将名称等于“adamlip Maciejowsky”吗? 如果它被这样覆盖如何修复它?
【问题讨论】:
-
顺便说一句,你忘了复制
hobby。 -
哈哈,你好担心 :) 好眼力
-
char name[20];- 不,不在 C++ 中。如果这不是家庭作业,请将其更改为std::string并对char *hobby执行相同操作 -
Stephen Pratta 的 C++ Primer Plus 练习。我相信他知道如何教我 C++