C++关键字override
一、什么是override
override的翻译是覆盖。实际上它在C++中可以检测哪些虚函数没有被重写并报错
注:在派生类的成员函数中使用override时,如果基类中无此函数,或基类中的函数并不是虚函数,编译器会给出相关错误信息。
二、使用步骤
先定义一个基类,基类中的func被声明为一个虚函数
#include<iostream>
using namespace std;
class Base
{public:Base(){cout << "Base的构造函数的调用" << endl;}virtual void func()//多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码{cout << "Base的func的调用" << endl;}virtual ~Base(){cout << "Base的析构函数的调用" << endl;}
};
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码
(纯)虚析构可以解决父类指针释放子类对象
派生类对func函数重写
class Son : public Base
{public:Son(){cout << "Son的构造函数的调用" << endl;}virtual void func() override;~Son(){cout << "Son的析构函数的调用" << endl;}
};void Son::func()
{cout << "Son的func函数的调用" << endl;
}void test()
{Base* son = new Son;son->func();delete son;
}int main()
{test();return 0;
}
运行结果
派生类对象实例化时会创建基类 构建先有父 再有子 析构反之
派生类的func覆盖重写了基类的func
今天做题时看见之前没见过的关键字override,浅浅记录一下
C++关键字override相关推荐
- C++ ——一文读懂:关键字override
override在C++中它是覆盖了一个方法并且对其重写,从而达到不同的作用.在我们C++编程过程中,最熟悉的就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明 ...
- C++之关键字:override
总结:在重写方法时,最好加上这个override这个关键字以加强代码规范. ovrride关键字,其实写不写无所谓. #include<iostream> using namespace ...
- Java中的关键字@Override解释
@Override标签的作用: @Override是伪代码,表示方法重写(继承父类,重写父类函数). @Override标签的好处: 1.作为注释,帮助自己检查是否正确的复写了父类中已有的方法 2.便 ...
- C++ override 关键字用法
override关键字作用: 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译. 举例子说明 struct Base {virtual ...
- C++-[override]关键字使用详解
本文介绍了C++ override关键字使用详解以及与重载的区别. C++ override关键字使用详解 一.override作用 二.override在基类与派生类的应用 2.1. 纯虚函数 2. ...
- override关键字
在学习设计模式的时候接触到了 override 关键字,查看相关资料后整理如下. Override 关键字作用 如果派生类在虚函数声明时使用了 override 描述符,那么该函数必须 重写 其基类中 ...
- C++11特性:override
override override 语义 override 代码示例 override override 语义 override 就是辅助你检查是否继承了想要虚继承的函数. 关键字 override ...
- C++——override
override关键字作用: 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译. 举例子说明 struct Base { virtua ...
- C++新特性探究(二):override、final
"改写"(override)和"重载"(overload)读起来很像,尽管这是两个毫不相干的概念. --<Effective Modern C++&g ...
最新文章
- Android--学习路线指南
- AIX 操作系统日常维护须知
- Objective-C中block的底层原理
- 基于Asp.Net Core打造轻量级内部服务治理RPC(一)
- 机器视觉【基础】什么是机器视觉?
- C# 中的readonly属性
- I2C是什么,什么类型设备支持I2C,为什么要使用它?
- 三星电视显示服务器无响应,三星电视网络电视看不了是怎么回事?
- html页面添加视频背景设置为自动播放,打开网址就会自动播放,简单有效亲测
- 解决linux中tmp目录下的文件被清理的问题
- vscode设置好看的编程字体
- 17年前那场疫情:马云隔离在家,刘强东关了12家店,俞敏洪欠债700万......
- (八) 爬虫教程 |Scrapy框架的使用
- NTRIP传输相关,上篇SNIP NTRIP Caster学习笔记扫盲补充
- 【Java系列】(四)Java多线程---线程安全
- 【微信小程序】图片被压扁怎么办?在image中添加 mode=widthFix
- 在树莓派中Linux环境下rpm包的安装
- 使用vue中的transition标签实现点击缓慢展开,再点缓慢关闭
- 扁平化设计与思维导图
- 论文翻译:Anytime Stereo Image Depth Estimation on Mobile Devices
热门文章
- Matlab论文插图绘制模板第55期—带等高线的网格曲面图(Meshc)
- 渗透测试抓包神器BurpSuite2022.5
- 鸿蒙电视厂商,华为首款鸿蒙系统产品成行业公敌!只因开机无广告:遭十大品牌批评...
- perf与火焰图使用介绍
- 蓝天变多了,为什么你家里的空气却更差了?
- 亿万人脉APP和人脉大师的本质区别分析
- python数据压缩和流压缩-zlib
- 盘点2018:咖啡因让人越战越勇
- 【Hadoop】YouTube 视频数据集分析实验 (原理+过程+代码)
- 时间序列 R 10 其他进阶预测方法 Advanced forecasting methods