定数変数に値を渡すとき、なぜこの変数が変更されるのか疑問に思います。
#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;
}
stdout:
(1, 1, 1)
(1, 4, 1)
このコードをコンパイルするために、追加の引数なしでg++v4.7を使用します。