问题 问答题

改错题使用VC6打开考生文件夹下的工程test17_1,此工程包含一个源程序文件test17_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:Vehicle messageCar messageVehicle message源程序文件test17_1.cpp清单如下:#include 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){cout<<"Car message\n";}(3)错误:unicycle.message();正确:unicycle->message();

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

多项选择题
选择题