我想知道,當我傳遞一個值到一個常量變量,爲什麼這個變量可以改變。常量類成員不恆定 - C++
#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編譯這段代碼。
更改點對點 – URL87
const point&p;是一個恆定參考的定義。所以參考是不變的價值。所以你可以將它分配給任何你想要的 –