-
无论是虚成员函数还是虚析构函数都会在实例化对象中产生一个虚函数表指针,并占四个单元内存查看全部
-
函数division的两个参数为dividend(被除数)和divisor(除数) 要求用户输入除数和被除数,并作为参数传递给division函数 如果除数为0,则抛出异常,并被捕获,将异常的内容显示到屏幕上:查看全部
-
在C++中异常处理通常使用try...catch...语法结构。一个try语句可以对应一个或多个catch语句,但不能没有catch语句。C++中使用throw抛出异常,通过catch捕获异常查看全部
-
利用多态的异常处理方式:定义接口类Exception 子类HardwareErr,SizeErr,MemoryErr,NetworkErr... 如果出现异常,则用父类捕获,用子类来处理。查看全部
-
常见的异常:查看全部
-
异常处理:主逻辑与异常处理逻辑分离 关键字:try{ 主逻辑} ;throw{抛出异常}; catch{异常处理逻辑}; 通过try尝试运行正常逻辑,出现异常,通过catch捕获异常,再对异常处理,throw抛出异常,被catch捕获,再进行处理。 try catch是一对多的关系。 最后一个catch(...),能捕获所有异常,但处理异常的方式野蛮,建议在之前所有处理方式均无法处理的情况下使用。 之前的例子是捕获异常返回的类型,可以通过引用来实现捕获异常的值。 在函数中执行到自己不想看到的分支时(还是需要自己判断异常),使用throw xxx;抛出异常,然后使用catch(xxx)来接受异常,这里可以使用到纯虚函数的继承方式来处理各种异常来增加程序的健壮性。查看全部
-
if(typeid(*指针对象)==typeid(转换对象)) { 转换类名*转换对象=dynamic_cast<刚刚的转换对象*>(刚刚的指针对象); 转换对象->对象();//打印 }查看全部
-
定义一个能够移动(Movable)类,要求含有纯虚函数move 定义一个公交车(Bus)类,继承Movable类,并实现函数move,定义函数carry 定义一个坦克(Tank)类,继承Movable类,并实现函数move,定义函数shot。 定义函数doSomething(Movable *obj),根据s指向对象的类型调用相应的函数。 实例化公交车类和坦克类,将对象传入到doSomething函数中,调用相应函数查看全部
-
RTTI的含义是运行时类型识别; RTTI技术可以通过父类指针识别其所指向对象的真实数据类型; 运行时类型别必须建立在虚函数的基础上,否则无需RTTI技术查看全部
-
RTTI:运行时类型识别Run-Time Type Identification typeid:得到当前对象指针实际指向的类型; dynamic_cast:转化为目标类型指针。 type_id注意事项:返回一个type_info对象的引用;若想通过基类的指针获得派生类的数据类型,基类必须含有虚函数;只能获取对象的实际类型。 dynamic_cast注意事项:只能应用于指针或引用的转换,要转换的类型中必须包含虚函数,转换成功返回子类地址,否则返回NULL。查看全部
-
定义一个能够射击(CanShut)类,要求含有纯虚函数aim和reload 定义一个枪(Gun)类,继承CanShut类,并实现函数aim和reload。 定义函数Hunting(CanShut *s),调用s指向对象的函数。 在函数中传入Gun的对象,查看结果:查看全部
-
可以使用接口类指针指向其子类对象,并调用子类对象中实现的接口类中纯虚函数。 一个类可以继承一个接口类,也可以继承多个接口类。 一个类可以继承接口类的同时也继承非接口类。 接口类中仅有纯虚函数,不能含有其它函数,也不可以含有数据成员。 仅含有纯虚函数的类称为接口类。接口类也是抽象类,接口类可以被继承,但是不能被实例化查看全部
-
接口类,不需要.Cpp文件,也没有构造函数与析构函数、数据成员。查看全部
-
含有纯虚函数的类称为抽象类,抽象类不能实例化。 接口类:仅含有纯虚函数的类,无数据成员,仅有成员函数,且成员函数均为纯虚函数。更多的表达一种能力或协议。查看全部
-
定义一个动物(animal)类,要求含有虚函数eat和纯虚函数move以及数据成员m_strName,并定义构造函数和虚析构函数 定义一个狗(Dog)类,要求公有继承动物类,定义构造函数和虚析构函数,并实现自己的eat和move函数 通过动物类实例化狗类,调用狗类当中的成员函数查看全部
举报
0/150
提交
取消