这合法吗?C++

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)

Wyz*_*a-- 6

是的,你可以这样做.但是,最好使用std::string而不是char*.如果name是a std::string,你可以写p.name = a.name;,它会分配内存并自动复制数据.

(std::string也有一个operator+字符串连接,所以你可以通过写入加入这两个名字p.name = name + a.name;- 我猜这可能是你真正希望你的operator+函数做的.)