可能重复:
Why isn't the const qualifier working on pointer members on const objects?为什么C++不对指针数据强制执行const?
考虑具有指针构件int *a
下面的类。编译器允许const方法constMod
,即使它修改指针数据。为什么编译器不会在const方法的上下文中使指针数据为常量?如果a
只是一个int,我们不会允许在const方法中修改它。
class ConstTest
{
public:
ConstTest(int *p): a(p) {}
void constMod() const {
++(*a);
}
int *a;
};
我在linux上使用g ++。
唯一的答案就是“因为是这样的”,但我想我们大多数人同意它通常是意外(起初),尽管人们可以事后找理由。 – 2011-05-10 06:33:23
C++默认给出了一个所谓的二进制位常量性 - 这意味着它可以确保对象的无单位已经改变,所以它只是检查指针 – rank1 2014-04-30 16:02:52