C ++类,const指针作为数据成员,析构函数,没有默认构造函数

时间:2018-06-09 08:52:01

标签: c++

我遇到过这个C ++代码。它有什么问题?我可以看到复制和赋值将是一个问题,因为指针被用作数据成员。

class Vehicle
{
    char const* type;
public:
    Vehicle(char const* tt) : type(tt) {}
    char const* getType() const
    {
        return type;
    }
    ~Vehicle()
    {
        delete type;
    }
};

1 个答案:

答案 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类型的返回指针无效