我遇到过这个C ++代码。它有什么问题?我可以看到复制和赋值将是一个问题,因为指针被用作数据成员。
class Vehicle
{
char const* type;
public:
Vehicle(char const* tt) : type(tt) {}
char const* getType() const
{
return type;
}
~Vehicle()
{
delete type;
}
};
答案 0 :(得分:2)
一个简单的重构使得这个类更加稳定,代价是字符串副本:
class Vehicle
{
std::string type;
public:
Vehicle(char const* tt) : type(tt) {}
char const* getType() const
{
return type.c_str();
}
};
然后我建议您将getType()
的返回类型更改为const std::string&
:
const std::string& getType() const
{
return type;
}
如果getType
成员发生了更改,至少你不必担心type
类型的返回指针无效。