【发布时间】:2014-02-26 21:31:33
【问题描述】:
在以下示例中,const 对象可以通过const 方法修改自己,因为在该方法中它通过non-const 指针访问自己。 (same program on ideone)
#include <iostream>
struct Object;
Object * g_pObject;
struct Object
{
Object():m_a(0){}
void ModifySelfViaConstMethod() const
{
g_pObject->m_a = 37;
}
int m_a;
};
int main()
{
Object o;
g_pObject = &o;
const Object & co = o;
std::cout << co.m_a << "\n";
co.ModifySelfViaConstMethod();
std::cout << co.m_a << "\n";
return 0;
}
我不太擅长阅读c++标准,所以在这里问:
标准对此有何评论?
a)const 方法并不能保证在您执行此类操作时您的对象保持不变
b) 是否定义明确且必须编译
c) 其他?
【问题讨论】:
-
非常糟糕的主意。变异成员函数通常不声明
const。