C++ override 关键字用法
- override关键字作用:
- 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译。
- 举例子说明
struct Base
{virtual void Turing() = 0;virtual void Dijkstra() = 0;virtual void VNeumann(int g) = 0;virtual void DKnuth() const;void Print();
};
struct DerivedMid: public Base
{// void VNeumann(double g);//接口被隔离了,曾想多一个版本的VNeumann函数
};
struct DerivedTop : public DerivedMid
{void Turing() override;void Dikjstra() override; //无法通过编译,拼写错误,并非重载void VNeumann(double g) override; //无法通过编译,参数不一致,并非重载
void DKnuth() override; //无法通过编译,常量性不一致,并非重载
void Print() override; //无法通过编译,非虚函数重载
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
(之前听过,但是没看过结构体重载 ==)
- 如果没有使用override关键字,上面的写法编译可以通过但是运行的效果与真实意愿(希望重载)不符
- 举例子说明
class testoverride
{
public:testoverride(void);~testoverride(void);virtual void show() const = 0;virtual int infor() = 0;virtual void test() = 0;virtual int spell() = 0;
};class B: public testoverride
{
public:virtual void show(); //1virtual void infor(); //2virtual void vmendd(); //3
virtual void test(int x);//4
virtual void splle(); //5
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
上面的1-5个重载函数编译过程中,除了返回值不同的infor会报错以外,其他函数都不会有问题,但是在类实例化的时候会提示是抽象类,因为他们都没有真正实现重载
class C: public testoverride
{
public:virtual void show() override;virtual void infor() override; virtual void vmendd() override;virtual void test(int x) override;virtual void splle() override;
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
添加了override以后,会在编译器override修饰符则可以保证编译器辅助地做一些检查,上面的情况无法通过编译
- 结论
如果派生类里面是像重载虚函数 就加上关键字override 这样编译器可以辅助检查是不是正确重载,如果没加这个关键字 也没什么严重的error 只是少了编译器检查的安全性
C++ override 关键字用法相关推荐
- C#中的static,interface,virtual,abstract,override的用法
C# 是面向对象的程序设计语言,每一个函数都属于一个类. Static:当一个方法被声明为Static时,这个方法是一个静态方法,编译器会在编译时保留这个方法的实现. 也就是说,这个方法属于类,但是不 ...
- php全局变量的关键字,PHP变量作用域(全局变量局部变量)globalstatic关键字用法实例分析...
本文实例讲述了PHP变量作用域(全局变量&局部变量)&global&static关键字用法.分享给大家供大家参考,具体如下: 我们知道,变量呢,其实就相当于我们用来储存信息的容 ...
- C++中的override关键字
文章目录 1 C++中的override关键字 1 C++中的override关键字 作用: 提示程序的阅读者,这个函数是重写父类的功能. 防止程序员在重写父类的函数时,把函数名写错. #includ ...
- [C++11]override关键字的使用
override关键字确保在派生类中声明的重写函数与基类的虚函数有相同的签名,同时也明确表明将会重写基类的虚函数,这样就可以保证重写的虚函数的正确性,也提高了代码的可读性,和final一样,这个关键字 ...
- java private 命名_java private关键字用法实例
这篇文章主要介绍了java private关键字用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 package java04; /* * 问 ...
- C++:C++中public protected private关键字用法
C++:C++中public protected private关键字用法 笔者这里主要针对C++中public protected private关键字做一个较全面的总结.首先public prot ...
- 设计模式--模板方法模式--Java实现-- java访问控制关键字用法
1.什么是模板方法 2.具体实现步骤 5.优缺点 6适用场景 java访问控制关键字用法 – protected的解释 (1)私有的:用关键字private修饰,只有本类可见. (2)默认的:不用访问 ...
- mysql常见关键字的用法_MySQL 常用关键字用法详解
MySQL 常用关键字用法详解 在开发工程中,操作数据库的时候经常会有不同类型的条件查询,除了使用where外,Mysql本身也提供了很多常用的关键字.本文主要介绍一些常用的关键字,像update.i ...
- java中的就近原则、方法中值传递和引用传递的区别、什么是构造方法、this关键字用法、什么是封装
你知道java中的就近原则嘛? package com.Test.java; /*** * 在java里面有一个"就近原则"详情可以参照下面代码**/public class Ac ...
最新文章
- 导师:CV学的这么差,你别毕业了
- Redis Labs 再次更改开源许可证,但 Redis 本身不受影响
- @Async in Spring--转
- linux镜像文件不要大于4g,Systemback制作大于4G的Ubuntu系统镜像
- 计算机网络——链路层之流量控制和可靠传输机制
- mysql架设_主从mysql架设
- 差分进化算法原理及matlab代码实现
- [Python 学习] 两、在Linux使用平台Python
- 国产杀毒软件连续因“作弊”遭全球权威评测机构指责
- Oracle用户可要顶住了:准备好大规模补丁工作!以修补多达 433 个的新安全漏洞...
- js add方法_爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py
- 计算机c盘坏了,电脑c盘损坏,怎样修复?
- 配电站房可视化巡检智能监控系统
- 截图工具Snipaste
- 微信小程序漂亮按钮(中间矩形两端半圆形)
- linux echo 时间
- geany设置全黑主题
- 计算机桌面没有打字,电脑输入法不见了怎么办
- 1~100以内的所有素数
- Swift-ScrollView轮播图的简易封装和使用
热门文章
- Java开发人员的升级之路
- CentOS6.5安装MySQL5.7详细教程
- 递归和分治的概念性的理解
- Wordpress prettyPhoto插件跨站脚本漏洞
- 有感于最近一个朋友买股票大亏
- go分析和kegg分析_干货预警:3分钟搞定GO/KEGG功能富集分析(2)
- linux进程socket通信,linux进程间通信--socket套接字 实例代码
- linux服务器上svn的log_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器 | Linux 中国...
- python概率密度函数参数估计_EM算法求高斯混合模型参数估计——Python实现
- C/C++编译、测试须知、须会,CMake、Boost等