使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: TestClass1 TestClass2 注意:不要改动main函数,不能增行或删行,也不能更

admin2017-03-22  14

问题 使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:
    TestClass1
    TestClass2
    注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
#include
#include
struCt TestClass0
{
    //********error********
    virtual void fun();
};
class TestClassl:public
TestClass0
{
    void fun()
    {
    cout<<"TestClass1"<    }
};
class TestClass2:public
TestClass0
{
    Void fun()
    (
    cout<<"TestClass2"<    }
};
Void main()
{
    TestClass0*p;
    TestClass1 obj1;
    TestClass2 obj2;
    //********error********
    P=*obj1;
    P->fun();
    //********error********
    p=*obj 2;
    p->fun();
    return;
}

选项

答案(1)virtual void fun()=0; (2)P=&obj1; (3)P=&obj2;

解析 (1)如果在基类中并不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun()应该是纯虚函数,也就是声明虚函数的时候初始化为0的函数。即第1个标识下的“virtual void fun0:0;”。
    (2)第2个标识下的p为指针变量,将对象obj1赋值给p,实际上是p指向对象obj1的地址,所以“p=*obj1:”修改为“P=&obj1;”。
    (3)第3个标识下的“p=*obj2;”语句同(2),修改为“p=&obj2;”。
转载请注明原文地址:https://kaotiyun.com/show/t9Ap777K
0

最新回复(0)