当我查看以下代码示例时,我认为 d.B::num
与 b.num
相同,但事实并非如此。它似乎是一个具有自己地址的不同变量。当我单击运行按钮时,我看到三个变量 b.num
、d.num
和 d.B::num
中的每一个都有其关联值(分别为 3、4 和 5)。
为什么会这样?如果 d.B::num
与 b.num
不同,这里究竟是什么?
struct B {int num;};
struct D : public B {int num;};
int main() {
B b;
D d;
b.num = 3;
d.num = 4;
d.B::num = 5;
cout << b.num << endl;
cout << d.num << endl;
cout << d.B::num << endl;
return 0;
}
最佳答案
看来你有:
B[int B::num]
和
D[int B::num, int D::num]
如果你调用 d.num
它默认为 D::num
如果你调用 d.B::num
它默认为 B::num
关于c++ - 为什么范围解析不适用于重写变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16978616/