问题 单项选择题

下列程序的输出结果为2,横线处应添加语句( )。
#include<iostream>
using namespace std;
class TestClass 1

punic:
void fun() cout<< 1 ;
;
class TestClass2:public TestClass 1

public:
void fun() cout<<2;
;
int main()

TestClass1 *p=new TestClass2;
p->fun();
delete p;
return 0;

A) public

B) private
C) virtual

D) protected

答案

参考答案:C

解析: 由主函数main入手,定义TestClass1类的指针对象p指向派生类TestClass2。因为基类和派生类中都有fun函数,题目要求输出为2,就是基类对象访问派生类中fun函数。通过虚函数与指向基类对象的指针变量的配合使用,就能方便调用同名函数。所以这里将基类中的fun函数声明为virtual。并且当一个成员函数被声明为虚函数后,其派生类中的同名函数自动成为虚函数。

多项选择题
问答题 简答题