这合法吗? C ++

时间:2017-04-02 19:10:18

标签: c++ dynamic-allocation

我有一个简单的问题.. 我可以在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;
}

};

1 个答案:

答案 0 :(得分:6)

是的,你可以这样做。但是,使用std::string代替char*会更好。如果namestd::string,您只需编写p.name = a.name;即可分配内存并自动复制数据。

std::string也有operator+进行字符串连接,因此您可以通过编写p.name = name + a.name;来加入这两个名称 - 我猜测这可能是您真正想要的你要做的operator+功能。)