问题
单项选择题
有以下程序: #inClUde <iostream> using namespace std; Class Base { public:Base(int x){ a=x;}void show(){ cout<<a;} private:int a; }; class Derived : public Base { public:Derived(int i) :Base(i+1),b(i){}void Show(){ cout<<b;} private:int b; }; int main() {Base b(5),*pb;Derived d(1);pb=&d;pb->show();return 0; } 运行后的输出结果是( )。
A.1
B.5
C.2
D.0
答案
参考答案:C
解析:
[分析]: 基类Base派生出派生类Derived,在主函数中,定义了基类对象b,基类指针pb,以及派生类对象d,并让基类指针pb指向派生类对象d。在C++中,当派生类的对象赋值给基类对象时,只能使用派生类对象中从基类继承的成员。所以最后执行语句“pb->show();”是调用基类的成员函数show(),输出a的值2。