美文网首页
虚函数的参数是其所属对象本身怎么办

虚函数的参数是其所属对象本身怎么办

作者: 路万奇与青川君 | 来源:发表于2018-11-23 19:34 被阅读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 --

    相关文章

      网友评论

          本文标题:虚函数的参数是其所属对象本身怎么办

          本文链接:https://www.haomeiwen.com/subject/hursqqtx.html