这是一个非常基础的程序,但我认为有必要澄清我的疑惑。
下面程序的输出是disp in base, x = 100。
在下面的程序中,我只设置了派生类对象中x
的值,而该对象又从基类继承了它。在基类中,x
被初始化为10
。我不明白的是,当我使用语法d1.base::disp()调用函数disp
时,它如何将派生类中x
的值带入基类函数中?我期望它显示10
而不是x
。
我是否漏掉了某些概念?
#include<iostream>
using namespace std;
class base {
public:
int x = 10;
void disp() {
cout<< "disp in base, x = " << x << endl;
}
};
class derived : public base {
public:
void disp() {
cout<< "disp in derived, x = " << x << endl;
}
};
int main() {
derived d1;
d1.x = 100;
d1.base::disp();
return 0;
}
x
在基类中,而不是派生类中。所以我不明白这个问题。 - user17732522derived
的实例通过"has-a"从它的基类base
获取它的x
。这里没有任何魔法。你还期望有什么其他的x
呢? - WhozCraigx
成员。d1.x
指的是基类子对象中的x
。 - user17732522