这是合法的吗? C++
Is this legal ? C++
我有一个简单的问题..
我可以在 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;
}
};
是的,你可以做到。但是,最好使用 std::string
而不是 char*
。如果 name
是 std::string
,您可以只写 p.name = a.name;
,它会自动分配内存并复制数据。
(std::string
也有一个 operator+
进行字符串连接,因此您可以通过编写 p.name = name + a.name;
来连接两个名称 – 我猜这可能是您真正想要的你的 operator+
功能。)
我有一个简单的问题.. 我可以在 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;
}
};
是的,你可以做到。但是,最好使用 std::string
而不是 char*
。如果 name
是 std::string
,您可以只写 p.name = a.name;
,它会自动分配内存并复制数据。
(std::string
也有一个 operator+
进行字符串连接,因此您可以通过编写 p.name = name + a.name;
来连接两个名称 – 我猜这可能是您真正想要的你的 operator+
功能。)