如何保护类成员指针免受不必要的破坏?

时间:2016-03-24 16:57:21

标签: c++ pointers delete-operator const-correctness

我很惊讶以下代码编译:

struct A{};

int main()
{
    const A * const a = new A();

    delete a;

    return 0;
}

为什么可以销毁被认为是常量的物体?这不完全打破 const-correctness 吗? 我该如何保护成员指针? 例如:

struct A{};

class B
{
public:

    B() :
        m_a( new A )
    { }

    ~B()
    {
        delete m_a;
    }

    const A * const get_a( ) const
    {
        return m_a;
    }


private:

    A * m_a;
};

int main()
{
    const B b;

    delete b.get_a( );

    return 0;
}

当然我不希望除了B本身以外的任何人修改对象B

0 个答案:

没有答案