问题 填空题

使用VC6打开考生文件夹下的工程test17_1,此工程包含一个源程序文件test17_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
Vehicle message
Car message
Vehicle message
源程序文件test17_1.cpp 清单如下:
#include <iostream.h>
class vehicle

int wheels;
float weight;
public:
/***************** found *****************/
void message(void) cout<<"Vehicle message\n";
;
class car:public vehicle

int passenger_load;
public:
/***************** found *****************/
void message (void)cout>>"Car message\n";
;
class truck:public vehicle

int passenger_load;
float payload;
public:
int passengers(void)return passenger_load;
;
void main()

vehicle * unicycle;
unicycle=new vehicle;
/***************** found *****************/
unicycle.message()
delete unicycle;
unicycle=new car;
unicycle->message();
delete unicycle;
unicycle=new truck;
unicycle->message();
delete unicycle;

答案

参考答案:(1)错误:void message(void){cout<<"Vehicle message\n";}
正确:virtual void message(void){cout<<"Vehicle message\n";}
(2)错误:void message(void){cout>>"Car message\n";}
正确:void message(void){eout<<"Car message\n";}
(3)错误:unicycle.message();
正确:unicycle->message();

解析:
(1)主要考查考生对于虚函数使用规则的掌握,要实现对函数message的动态联编应该使用虚函数,否则产生的是静态联编,调用的函数输出结果就与要求不符;
(2)主要考查考生对于流输出操作的掌握,该处错误的使用了流输入操作;
(3)主要考查考生是否能分清对象和对象指针,对象指针使用“->”调用成员函数,而对象使用“.”调用成员函数。

单项选择题
单项选择题