我很惊讶以下代码编译:
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
。