為什么我加上了?#include <typeinfo>出現(xiàn)了更多的問(wèn)題了。。
#include <iostream>
#include <stdlib.h>
#include <string>
#include <typeinfo>
using namespace std;
/**
?* 定義移動(dòng)類(lèi):Movable
?* 純虛函數(shù):move
?*/
class Movable
{
public:
? ? virtual void move()=0;
};
/**
?* 定義公交車(chē)類(lèi):Bus
?* 公有繼承移動(dòng)類(lèi)
?* 特有方法carry
?*/
class Bus : public Movable
{
public:
? ? virtual void move()
? ? {
? ? ? ? cout << "Bus -- move" << endl;
? ? }
? ??
? ? ?void? carry()
? ? {
? ? ? ? cout << "Bus -- carry" << endl;
? ? }
};
/**
?* 定義坦克類(lèi):Tank
?* 公有繼承移動(dòng)類(lèi)
?* 特有方法fire
?*/
class Tank :public Movable
{
public:
? ? virtual void move()
? ? {
? ? ? ? cout << "Tank -- move" << endl;
? ? }
? void fire()
? ? {
? ? ? ? cout << "Tank -- fire" << endl;
? ? }
};
/**
?* 定義函數(shù)doSomething含參數(shù)
?* 使用dynamic_cast轉(zhuǎn)換類(lèi)型
?*/
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;
}
2019-11-12
我知道了,,==寫(xiě)成=了,舒服了。。