为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我加上了​#include <typeinfo>出现了更多的问题了。。

#include <iostream>

#include <stdlib.h>

#include <string>

#include <typeinfo>

using namespace std;


/**

 * 定义移动类:Movable

 * 纯虚函数:move

 */

class Movable

{

public:

    virtual void move()=0;

};


/**

 * 定义公交车类:Bus

 * 公有继承移动类

 * 特有方法carry

 */

class Bus : public Movable

{

public:

    virtual void move()

    {

        cout << "Bus -- move" << endl;

    }

    

     void  carry()

    {

        cout << "Bus -- carry" << endl;

    }

};


/**

 * 定义坦克类:Tank

 * 公有继承移动类

 * 特有方法fire

 */

class Tank :public Movable

{

public:

    virtual void move()

    {

        cout << "Tank -- move" << endl;

    }


  void fire()

    {

        cout << "Tank -- fire" << endl;

    }

};


/**

 * 定义函数doSomething含参数

 * 使用dynamic_cast转换类型

 */

void doSomething(Movable *obj)

{

    obj->move();


    if(typeid(*obj)=typeid(Bus))

    {

       Bus *bus=dynamic_cast<Bus *>(obj);

        bus->carry();

    }


    if(typeid(*obj)=typeid(Tank))

    {

        Tank *tank=dynamic_cast<Tank *>(obj);

        tank->fire();

    }

}


int main(void)

{

    Bus b;

    Tank t;

    doSomething(&b);

    doSomething(&t);

    return 0;

}



正在回答

1 回答

我知道了,,==写成=了,舒服了。。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

为什么我加上了​#include <typeinfo>出现了更多的问题了。。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信