虚函数的参数是其所属对象本身怎么办
2018-11-23 本文已影响0人
路万奇与青川君
虚函数的参数是其所属对象本身怎么办?
问题简述:
请注意,这不是一个虚函数的知识点!!,只是为了方便和我在可能同情形下,遇到相同问题的同学检索该信息方便,我取了这样一个标题。
问题的起因是这样一道 C++ 的实验题。
6-2 车的不同行为 (10 分)
定义一个车(vehicle)基类,有虚函数Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,它们都有Run、Stop等成员函数。完成这些类使得主函数可以运行并得到正确的输出结果。
函数接口定义:
完成类代码
裁判测试程序样例:
/* 请在这里填写答案 */
int main(int argc, char const *argv[])
{
Vehicle veh;
Bicycle bic;
Motorcar mot;
run(veh);
run(bic);
run(mot);
return 0;
}
输入样例:
无
输出样例:
在这里给出相应的输出。例如:
Vehicle run
Bicycle run
Motorcar run
问题解决
其实说起来这并不是一道非常难的题,但是有个地方让我非常头疼...
本来其实我写出来的程序,如果主函数里是 veh.run() 、mot.run() 我可能根本不会写这个文档,但是就是遇上了杨军老师出的这么古怪的一道题:
居然直接调用 run() 函数,传入的参数是某个含有 run() 成员函数的对象
绞尽脑汁...
最后是在逛 CSDN 的时候得到了一丝灵感,因为之前根本没有想到 #define 的骚气玩法...
下面贴上我的解决方法:
#include <iostream>
using namespace std;
#define run(obj) obj.Run()
class Vehicle{
public:
Vehicle(){
}
virtual void Run(){
cout << "Vehicle run" << endl;
}
};
没错,正是用到了 #define 可以传入参数,来定义所谓的伪函数的用法。
-- THE END --