摘要: RTTI:运行时类型识别 typeid(*obj).name()打印出obj这个指针指向的实际的对象类型 对类型进行比对:if{typeid(*obj)==typeid(Bird)} dynamic_cast转换类型,中是要转化成为的类型,例如:Bird *bird = dynamic_cast(obj);(obj)转化为Bird * 类型 dynamic_cast用法的注意事项:只能应用于指针... 阅读全文
posted @ 2019-07-25 17:44 xjyxp01 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 接口类更多的是表达一种能力或协议 阅读全文
posted @ 2019-07-25 17:36 xjyxp01 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 虚函数:virtual double calcArea(){return 0;} 纯虚函数:virtual double calcPerimeter() = 0; 纯虚函数在虚函数表中直接写为0,包含纯虚函数的类,就是抽象类。 纯虚函数无法调用,所以抽象类无法实例化对象 抽象类的子类也有可能是抽象类。抽象类的子类只有把抽象类当中的所有纯虚函数都做了实现,子类才可以实例化对象。 抽象基类是本类族的... 阅读全文
posted @ 2019-07-25 17:35 xjyxp01 阅读(197) 评论(0) 推荐(0) 编辑
摘要: C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 虚函数表指针 定义了virtual... 阅读全文
posted @ 2019-07-25 17:26 xjyxp01 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 【类模板】 template class MyArray{ public: void display();//若是类内定义则没什么特别的:void display(){...} private: T *m_pArr; }; //实现 template void MyArry::display(){ ... } //使用 MyArray arr; arr.display(); 【... 阅读全文
posted @ 2019-07-25 10:31 xjyxp01 阅读(112) 评论(0) 推荐(0) 编辑