多态
没有金刚钻,也木有刷子
个人学习记录而已,主要供自己查看,如有不当请见谅。
展开
-
虚析构和纯虚析构
1.多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码 解决方式:将父类中的析构函数改为虚析构或者纯虚构 虚析构和纯虚构共性: 可以解决父类指针释放子类对象 都需要有具体的函数实现 虚析构和纯虚构的区别: 如果是纯虚析构,该类属于抽象类,无法实例化对象 虚析构语法: virtual ~类名(){} 纯虚构语法: virtual ~类名()=0; #include<iostream> using namespace std; #inclu.原创 2021-03-04 17:12:11 · 194 阅读 · 1 评论 -
多态案列--制作饮品
流程:煮水--冲泡--倒入杯中--加入辅料 利用多态技术实现本案列,提供抽象制作饮品类,提供子类制作咖啡和茶叶 #include<iostream> using namespace std; #include<string> //多态案例--制作饮品 class AbstractDrinking { public: //煮水 virtual void Boil() = 0; //冲泡 virtual void Brew() = 0; //倒入杯中 virtual v原创 2021-03-04 14:43:40 · 152 阅读 · 1 评论 -
纯虚函数和抽象类
在多态中,原创 2021-03-04 13:46:41 · 127 阅读 · 1 评论 -
多态的案例--计算器类
#include<iostream> using namespace std; #include<string> //分别利用普通写法和多态技术实现计算器 //普通写法 class Calculator { public: double getresult(string oper) { if (oper == "+") { return a + b; } else if (oper == "-") { return a - b; } el.原创 2021-03-03 19:10:02 · 226 阅读 · 1 评论 -
多态的基本概念
多态分为两类 静态多态:函数重载和运算符重载属于静态多态,复用函数名 动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定--编译阶段确定函数地址 动态多态的函数地址晚绑定--运行阶段确定函数地址 #include<iostream> using namespace std; #include<string> //动态 //动物类 class Animal { public: //虚函数 //函数前面加上virtual关键字,变成虚原创 2021-03-03 16:08:14 · 139 阅读 · 0 评论