改错题 使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为: classBase classD1 classD2 classD3 finBase 源程序文件kt10_1.cpp清单如下: #include
参考答案:
(A)将class DB:public Base 改为:class DB:virtual public Base (B)将class DC::public DA,public DB 改为:class DC:public DA,public DB (C)将d.f();改为:d.Base::f();
解析:
(1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一; (2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表; (3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。