Mat*_*bie 0 c++ dynamic-allocation
我有一个简单的问题..我可以在运算符+其他对象中分配和释放这样的内存
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;
}
};
Run Code Online (Sandbox Code Playgroud)
是的,你可以这样做.但是,最好使用std::string而不是char*.如果name是a std::string,你可以写p.name = a.name;,它会分配内存并自动复制数据.
(std::string也有一个operator+字符串连接,所以你可以通过写入加入这两个名字p.name = name + a.name;- 我猜这可能是你真正希望你的operator+函数做的.)