我有一个简单的问题.. 我可以在operator +中为其他对象
分配和释放这样的内存 delete [] p.name;
p.name = new char[strlen(a.name) + 1];
查看operator+
class PlDrustvo{
private:
char *name;
public:
// Constructors and destructors are implemented.
PlDrustvo operator+(const PlDrustvo &a)
{
PlDrustvo p(*this);
if(///////){
delete [] p.name;
p.name = new char[strlen(a.name) + 1];
strcpy(p.name, a.name);
}
return p;
}
};
答案 0 :(得分:6)
是的,你可以这样做。但是,使用std::string
代替char*
会更好。如果name
是std::string
,您只需编写p.name = a.name;
即可分配内存并自动复制数据。
(std::string
也有operator+
进行字符串连接,因此您可以通过编写p.name = name + a.name;
来加入这两个名称 - 我猜测这可能是您真正想要的你要做的operator+
功能。)