我有一个简单的问题.. 我可以在 operator+ 中为其他对象分配和释放内存吗
删除[] 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;
}
};
最佳答案
是的,你可以做到。但是,最好使用 std::string
而不是 char*
。如果 name
是一个 std::string
,你可以只写 p.name = a.name;
它会分配内存并复制自动数据。
(std::string
也有一个 operator+
进行字符串连接,因此您可以通过编写 p.name = name + a 来连接两个名称.name;
– 我猜这可能是您真正希望您的 operator+
函数执行的操作。)
关于c++ - 这是合法的吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172425/