问题 单项选择题

为使程序的输出结果为: Base:: fun 那么应在下列程序画线处填入的正确语句是( )。 #include <iostream> using namespace std; class Base { public:void fun (){ cout<<"Base: :fun"<<end1;} }; class Derived : public Base { public:void fun ( ){ cout<<"Derived: :fun"<<end1;} }; int main ( ) {Base a,*pb;Derived b;_________;pb->fun(); //调用基类的成员函数 fun()return 0 ; }

A.pb=&a

B.pb=b

C.pb=&b

D.pb=&Base

答案

参考答案:C

解析: 本题程序中类Derived是从基类Base公有继承的。主函数中定义了一个基类对象a和一个指向基类对象的指针pb,又定义了一个派生类Derived对象b。当 pb指向对象b时,pb->fun()调用基类Base的成员函数fun()。这是由于Derived是 Base的子类型,因此可以将派生类Derived的对象b的地址赋值给指向基类Base的指针pb,但这时指针pb只能使用从基类Base继承的成员。

单项选择题
判断题