-
用m_pCenter指向对象查看全部
-
为了避免重复包含查看全部
-
因为前面加了virtual查看全部
-
动态多态(晚绑定):不同对象的相同指令。静态多态(早绑定):函数重载。查看全部
-
这一节讲的不错查看全部
-
多态具体到语法中是指,使用父类指针指向子类对象,并可以通过该指针调用子类的方法查看全部
-
静态多态不就是重载吗?查看全部
-
#include <iostream> #include <string> #include <stdlib.h> using namespace std; /** * 定义函数division * 参数整型dividend、整型divisor */ int division(int dividend, int divisor) { if(0 == divisor) { // 抛出异常,字符串“除数不能为0” throw string("除数不能为0"); } else { return dividend / divisor; } } int main(void) { int d1 = 0; int d2 = 0; int r = 0; cin >> d1; cin >> d2; // 使用try...catch...捕获异常 try { division(d1,d2); } catch(string) { cout << "除数不能为0" << endl; } return 0; }查看全部
-
#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; }查看全部
-
#include <iostream> #include <stdlib.h> #include <string> using namespace std; /** * 定义射击类:CanShut * 定义纯虚函数:aim、reload */ class CanShut { public: virtual void aim() = 0; virtual void reload() = 0; }; /** * 定义枪类:Gun * 公有继承射击类 * 实现成员函数:aim、reload */ class Gun : public CanShut { public: virtual void aim() { cout << "Gun -- aim" << endl; } virtual void reload() { cout << "Gun -- reload" << endl; } }; /** * 定义含参函数射击:hunting * 调用参数的aim与reload函数 */ void hunting(CanShut *s) { s->aim(); s->reload(); } int main(void) { // 实例化枪对象 CanShut *s = new Gun; // 调用含参函数hunting,将对象枪传入函数中 hunting(s); // 释放内存 delete s; s = NULL; return 0; }查看全部
-
RTTI的含义是运行时类型识别 RTTI技术可以通过父类指针识别其所指向对象的真实数据类型 运行时类型必须建立在虚函数的基础上,否则无需RTTI技术查看全部
-
typied注意事项查看全部
-
typeid注意事项查看全部
-
dynamic_cast注意事项:查看全部
-
可以使用接口类指针指向其子类对象,并调用子类对象中实现的接口类中纯虚函数; 一个类可以继承一个接口,也可以继承多个接口; 一个类可以继承接口类的,同时也继承非接口类,查看全部
举报
0/150
提交
取消