c++从入门到精通——虚函数与纯虚函数
文章目录
- 虚函数与纯虚函数
- 概念
- 普通计数器
- 多态计算器
- 其他
虚函数与纯虚函数
概念
首先:强调一个概念
定义一个函数为虚函数,不代表函数为不被实现的函数。
定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。
定义一个函数为纯虚函数,才代表函数没有被实现。
定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。
普通计数器
普通计数器
class Calculator
{public:void setv1(int v){this->val1 = v;}void setv2(int v){this->val2 = v;}int getResult(string oper){if (oper == "+"){return val1 + val2;}else if (oper == "-"){return val1 - val2;}}
private:int val1;int val2;};void test01()
{Calculator cal;cal.setv1(10);cal.setv2(10);cout << cal.getResult("+") << endl;cout << cal.getResult("-") << endl;}
多态计算器
真正的开发中,有个开发原则开闭原则。
- 对扩展开放
- 对修改关闭
多态计算器代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;//利用多态实现计算器
class abstractCalculator
{public://虚函数 virtual int getResult(){ return 0; };//纯虚函数//如果父类中有了 纯虚函数 子类继承父类,就必须要实现 纯虚函数//如果父类中 有了 纯虚函数 ,这个父类 就无法实例化对象了//这个类有了纯虚函数,通常又称为 抽象类virtual int getResult() = 0;void setv1(int v){this->val1 = v;}void setv2(int v){this->val2 = v;}public:int val1;int val2;};//如果父类中有了 纯虚函数 子类继承父类,就必须要实现 纯虚函数
class A :public abstractCalculator
{public:virtual int getResult(){return 0;}
};//加法计算器
class PlusCalculator :public abstractCalculator
{public:virtual int getResult(){return val1 + val2;};
};
class SubCalculator : public abstractCalculator
{public:virtual int getResult(){return val1 - val2;};
};
class ChengCalculator :public abstractCalculator
{public:virtual int getResult(){return val1 * val2;};};void test02()
{abstractCalculator* abc;//加法计算器abc = new PlusCalculator;abc->setv1(10);abc->setv2(20);cout << abc->getResult() << endl;delete abc;abc = new SubCalculator;abc->setv1(10);abc->setv2(20);cout << abc->getResult() << endl;delete abc;abc = new ChengCalculator;abc->setv1(10);abc->setv2(20);cout << abc->getResult() << endl;//如果父类有了纯虚函数,不能实例化对象了//abstractCalculator aaa;//abstractCalculator * abc = new abstractCalculator;}int main() {//test01();test02();system("pause");return EXIT_SUCCESS;
}
其中,virtual int getResult(){ return 0; };
是虚函数,virtual int getResult() = 0;
是纯虚函数。
其他
虚函数和纯虚函数的区别
c++从入门到精通——虚函数与纯虚函数相关推荐
- c/c++入门教程 - 2.4.7 多态、函数地址晚绑定(重写,虚函数,纯虚函数,抽象类,虚析构,纯虚析构)
目录 4.7 多态 4.7.1 多态的基本概念(超级重要) 4.7.2 多态的原理刨析(超级重要) 4.7.2 多态案例一:计算器类 4.7.3 纯虚函数和抽象类 4.7.4 多态案例二 - 制作饮品 ...
- 但并不从包含函数声明的接口派生_C++的虚函数和纯虚函数
虚函数:类成员函数前面添加virtual关键字,则该函数被称为虚函数. 纯虚函数:在虚函数的基础上,在函数末尾加上 = 0. class Animal {public: virtual void Sh ...
- 一口气搞懂《虚函数和纯虚函数》
学习C++的多态性,你必然听过虚函数的概念,你必然知道有关她的种种语法,但你未必了解她为什么要那样做,未必了解她种种行为背后的所思所想.深知你不想在流于表面语法上的蜻蜓点水似是而非,今天我们就一起来揭 ...
- C++知识点51——虚函数与纯虚函数(下)
接上一篇文章https://blog.csdn.net/Master_Cui/article/details/109957146 10.练习 示例 class base { public:base() ...
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
C++ 在继承中虚函数.纯虚函数.普通函数,三者的区别 1.虚函数(impure virtual) C++的虚函数主要作用是"运行时多态",父类中提供虚函数的实现,为子类提供默认的 ...
- 虚函数与纯虚函数的区别
虚函数:为了方便使用多态特性,常常需要在基类中定义虚函数. 纯虚函数: 1.原因与虚函数相同: 2.在很多情况下,基类本身生成的对象是不合理的: 虚函数与纯虚函数的区别: 1.类里声明为虚函数的话,这 ...
- 虚函数和纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...
- C++ 虚函数和纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...
- (转)虚函数和纯虚函数区别
在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念.因为它充分体现 了面向对象思想中的继承和多态性这两大特性,在C++语言里应用极广.比如在微软的MFC类库中,你 ...
最新文章
- 特斯拉自动驾驶新能力:识别红绿灯停车标识;尝鲜车主:实用好用
- linux ioctl 设备操作函数 r3到r0 应用层 驱动层 通讯
- 数据中心管理将成为未来十年所需的技能
- 图像处理学习--前篇--像素相关
- 第一讲,Python的安装(干货)
- 检索数据_20_按照字符串数字组合的排序
- 【STM32】FreeRTOS任务相关API
- MySQL的join类型
- 在移动端项目中使用vconsole
- x210-II WinCE启动10s,还可继续优化
- mybatis sql xml 字符逃脱
- CentOS7 设置IP、源、SSH密钥登录、自动补全、防火墙
- java迷题_Java——类谜题
- php里无法找到该网页,thinkphp搭建网站后端,入口文件找不到(无法加载)
- css伪类设置小标签
- python列表和字典的区别_Python中列表和字典有什么区别,分别适用于什么场景?...
- MapBox本地化部署
- linux下bluetooth编程(一)基础概念
- Sophos防火墙v18版本访问内部服务器或者电脑SNAT地址转换的问题解决办法
- 51单片机 11.0592MHz 产生115200 波特率