我想知道当我将一个值传递给一个常量变量时,为什么这个变量会改变。
#include <cstdio>
struct point
{
int x, y, z;
};
class A
{
public:
A(const point &p) :
p(p)
{
printf("(%d,%d,%d)\n", p.x, p.y, p.z);
}
void do_smth()
{
printf("(%d,%d,%d)\n", p.x, p.y, p.z);
}
const point &p;
};
int main(int argc, const char *argv[])
{
point p = {1, 1, 1};
A a(p);
p.y = 4;
a.do_smth();
return 0;
}
标准输出:
(1, 1, 1)
(1, 4, 1)
我使用没有额外参数的 g++ v4.7 来编译这段代码。