-
在异常处理时,我们可以通过定义一个接口类,然后定义不同异常继承这个类,通过不同异常处理不同的方法,就可以把处理异常和多态结合
查看全部 -
常见的异常
查看全部 -
catch获取try中的异常,并做处理,不识别的异常可以用。。。统一处理
查看全部 -
throw try catch的用法
查看全部 -
#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;
}
virtual void carry()
{
cout << "Bus -- carry" << endl;
}
};
/**
* 定义坦克类:Tank
* 公有继承移动类
* 特有方法fire
*/
class Tank :public Movable
{
public:
virtual void move()
{
cout << "Tank -- move" << endl;
}
virtual 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;
}
查看全部 -
每一类最多只有一个虚函数表公用,子类中有与父类中虚函数同名的函数,则子类的虚函数表中的对应项会覆盖掉从父类继承的那一项
查看全部 -
dynamic_cast只能转换含有虚函数的类的指针大概
查看全部 -
理论前提:
执行完子类的析构函数系统就自动会执行父类的析构函数查看全部 -
覆盖:
子类定义了与父类同名的虚函数
子类的虚函数表中子类的虚函数地址会覆盖掉父类的虚函数地址
查看全部 -
多态具体到语法中是指,使用父类指针指向子类对象,并可以通过该指针调用子类的方法; 产生多态的基础是继承关系,没有继承就没有多态; 多态的语法核心是virtual关键字,必须使用virtual才能使多个类间建立多态关系; 封装、继承、多态是面向对象的三大特征。
查看全部 -
typeid的注意事项
查看全部 -
typeid返回的事一个type_info类型,这个类可用函数如下
查看全部 -
typeid(类):判断类的类型
typeid(类),name(); 类的名称
dynamic_cast<目标类型指针或引用>(原类型):吧原类型转化为目标类型
查看全部 -
RTTI就是对继承同一父类的不同子类在运行时调用同名的父类函数时,判断子类类别并进行相应的动作的判断
查看全部 -
RTTI ;运行时状态识别
查看全部
举报