问答题 使用VC6打开 下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:
TestClass1
TestClass2
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
#include<iostream.h>
#include<assert.h>
Struct TeStClass0
{
//********error********
virtual void fun();
};
class TestClass1: public
TestClass0
{
void fun ()
{
cout "TestClass1 " endl;
}
};
class TestClass2: public
TestClass0
{
void fun ()
{
cout "TestClass2"
【正确答案】
【答案解析】(1)virtual void fun()=0;
(2)p=&obj1;
(3)p=&obj2;
答案考生文件夹 [解析] 本题程序中的功能为输出字符串FestClass1和TestClass2。从已定源程序的main主函数开始入手,通过定义的类,实现题目中要求的输出结果。
(1)如果在基类中并不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun()应该是纯虚函数,也就是声明虚函数的时候初始化为0的函数。即第1个标识下的“virtual void fun()=0;”。
(2)第2个标识下的p为指针变量,将对象obj1赋值给p,实际上是p指向对象obj1的地址,所以“p=*obj1;”修改为“p=&obj1;”。
(3)第3个标识下的“p=*obj2;”语句同(2),修改为“p=&obj2;”。