假设我有一个结构体定义:
struct thing
{
thing* x;
int z;
thing() : x(this), z(0) {}
void foo() const
{
this->x->z++;
}
};
请注意,我创建了一个可变指向自己的指针(邪恶笑声)。然后我可以像这样稍后使用它:
int main()
{
const thing c;
c.foo();
assert(c.z == 1);
c.foo();
assert(c.z == 2);
return c.z;
}
正如您所看到的,我似乎可以更改常量值......这是否属于未定义行为?
c
是const。 - geza