使用VC6打开考生文件夹下的源程序文件modi l.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行。并且使程序输出的结果为: OK 注意:错误的语句在∥********error********的下面,修改该语句即可。 #in

admin2015-07-20  26

问题 使用VC6打开考生文件夹下的源程序文件modi l.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行。并且使程序输出的结果为:
    OK
    注意:错误的语句在∥********error********的下面,修改该语句即可。
#include<10Stream.h>
class CBase
{
public:
    CBase()
    {
    a=b=0;
    }
private:
    int a,b,
};
class CDerivel:public CBase
{
public:
    CDerivel()
    {
    }
    ∥********error********
    virtual void func(),
};
class CDerive2:publ ic CDerivel
{
public:
    CDerive2()
    {
    a=0;
    b=0;
    }
    void func()
    {
∥********error********
    cout<<“OK”    }
private:
    int a;
    int b,
};
void main()
{
   CDerive2 obj;
∥********error********
    CDerivel  *p  =(CDerivel*)
obj;
    P一>func();
}

选项

答案(1)virtual void func()=0 ; (2)cout<<”OK”<
解析 (1)由审题分析可知,CDeriveI类中的func0函数是纯虚函数,纯虚函数的定义格式为:virtual<函数类型><函数名>(<参数表>)=0,因此第1个标识下应为“virtual voidfunc()=0;”。func()函数没有参数表。
(2)编译程序后发现第2个标识下有错误,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,应改成“tout<<”OK”<(3)函数的调用方式有2种:非多态调用和多态调用,非多态调用是指不使用指针或引用的直接调用,多态调用是指通过对象的指针或引用的调用,在主函数中定义了CDerivel*p,P是指向基类CDerivel的指针,因此是多态调用方式,即通过对象的指针来调用,应该把派生类对象的地址赋给P,而不是对象名,因此第3个标识下应改为“CDerivel*P=(CDerivel*)&obj;”。
转载请注明原文地址:https://kaotiyun.com/show/j3Np777K
0

最新回复(0)