C++11中override的使用
override是C++11中的一个继承控制关键字。override确保在派生类中声明的重载函数跟基类的虚函数有相同的声明。
override明确地表示一个函数是对基类中一个虚函数的重载。更重要的是,它会检查基类虚函数和派生类中重载函数的签名不匹配问题。如果签名不匹配,编译器会发出错误信息。
override表示函数应当重写基类中的虚函数(用于派生类的虚函数中)
override: Specifies that a virtual function overrides another virtual function. In a member function declaration or definition, override ensures that the function is virtual and is overriding a virtual function from the base class. The program is ill-formed (a compile-time error is generated) if this is not true.
The override special identifier means that the compiler will check the base class(es) to see if there is a virtual function with this exact signature. And if there is not,the compiler will indicate an error.
Declaring a method as "override" means that that method is intended to rewrite a(virtual) method on the base class. The overriding method must have same signature (at least for the input parameters) as the method it intends to rewrite.
Adding"override" clearly disambiguates this: through this, one is telling the compiler that three things are expecting:
(1)、there is a method with the same name in the superclass.
(2)、this method in the superclass is declared as "virtual" (that means, intended to be rewritten).
(3)、the method in the superclass has the same (input*) signature as the method in the subclass(the rewriting method).
If any of these is false, then an error is signaled.
The override keyword serves two purposes:
(1)、It shows the reader of the code that "this is a virtual method, that is overriding a virtual method of the base class."
(2)、The compiler also knows that it's an override, so it can "check" that you are not altering/adding new methods that you think are overrides.。
下面是从其他文章中copy的测试代码,详细内容介绍可以参考对应的reference:
#include "override.hpp"
#include <iostream>//
// reference: http://stackoverflow.com/questions/18198314/what-is-the-override-keyword-in-c-used-for
struct base_override {virtual void foo() = 0;
};struct derived_override : base_override {virtual void foo() override{std::cout << "__PRETTY_FUNCTION__" << std::endl;}
};int test_override1()
{base_override* override = new derived_override();override->foo();return 0;
}//
// reference: http://en.cppreference.com/w/cpp/language/override
struct A {virtual void foo();void bar();
};struct B : A {// void foo() const override; // Error: B::foo does not override A::foo (signature mismatch)void foo() override; // OK: B::foo overrides A::foo// void bar() override; // Error: A::bar is not virtual
};//
// reference: https://msdn.microsoft.com/en-us/library/jj678987.aspx
class BaseClass
{virtual void funcA();virtual void funcB() const;virtual void funcC(int = 0);void funcD();
};class DerivedClass : public BaseClass
{virtual void funcA() override; // ok// virtual void funcB() override; // compiler error: DerivedClass::funcB() does not // override BaseClass::funcB() const// virtual void funcC(double = 0.0) override; // compiler error: // DerivedClass::funcC(double) does not // override BaseClass::funcC(int)// void funcD() override; // compiler error: DerivedClass::funcD() does not // override the non-virtual BaseClass::funcD()
};//
// reference: https://segmentfault.com/a/1190000003698366
struct B_ {virtual void f();virtual void g() const;virtual void h(char);void k(); // non-virtualvirtual void m() final;
};struct D_ : B_ {void f() override; // OK: 重写 B::f()// void g() override; // error: 不同的函数声明,不能重写virtual void h(char); // 重写 B::h( char ); 可能会有警告// void k() override; // error: B::k() 不是虚函数// virtual void m(); // error: m()在基类中声明禁止重写
};
GitHub:https://github.com/fengbingchun/Messy_Test
相关文章:

平头哥发布一站式芯片设计平台“无剑”,芯片设计成本降低50%
导读:8 月 29 日,在上海举行的世界人工智能大会上,阿里巴巴旗下半导体公司平头哥发布 SoC 芯片平台“无剑”。无剑是面向 AIoT 时代的一站式芯片设计平台,提供集芯片架构、基础软件、算法与开发工具于一体的整体解决方案ÿ…

Windows XP下,JDK环境变量配置
2019独角兽企业重金招聘Python工程师标准>>> 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08; 2.安装完成后,右击“我的电脑”,点击“属性”; 3.选择…

Markdown语法简介
Markdown是一种方便记忆、书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档。它目标是实现易读易写。Markdown的语法全由一些符号所组成。Markdown语法的目标是成为一种适用于网络的书写语言。 Markdown优点:纯文本…

吴恩达:AI未来将呈现四大发展趋势
作者 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:8 月 30 日,世界人工智能大会精彩继续。在今天的全球工业智能峰会上,Landing.AI 创始人及首席执行官吴恩达来到现场,做了题为《人工智能是新电力》的演讲…

嵌入式课程安排 嵌入式培训课程大纲参考
嵌入式是一门综合性的学科,现在学习嵌入式开发不是单纯局限于单片机或者Linux,嵌入式课程中包含着非常多的内容。以粤嵌嵌入式课程进行参考,看看我们要学习嵌入式的话,要掌握哪些必备的技能。嵌入式课程安排包含:1、入…

Linux网站架构系列之Apache----进阶篇
本篇博文为Linux网站架构系列之apache的第二篇,我将带大家一起学习apache的编译参数,目录结构和配置文件等方面的知识,实现对apache服务的进一步掌握,并使之能更好的应用到生产实战中去。一、编译参数在上篇的apache部署中&#x…

仅用10天设计的JavaScript,凭什么成为程序员最受欢迎的编程语言?
导语:在这个世纪之交诞生的 JavaScript,没人想到会发展为当今世界上最流行的语言之一。它不够成熟,不够严肃,甚至连名字都是模仿的 Java。那么,JavaScript 的成功是依靠运气和完美时机的侥幸吗?其实不然——…

C++11中= delete;的使用
C11中,对于deleted函数,编译器会对其禁用,从而避免某些非法的函数调用或者类型转换,从而提高代码的安全性。 对于 C 的类,如果程序员没有为其定义特殊成员函数,那么在需要用到某个特殊成员函数的时候&…

vue 使用scss
使用vue-cli模板创建的项目中,使用scss步骤 1. cmd命令: cnpm install sass-loader --save-devcnpm install node-sass --sava-dev2.查看package.json文件中是否已自动添加以下信息 3. 转载于:https://www.cnblogs.com/duanzhenzhen/p/10453495.html

EBS form日历可选范围设置(calendar.setup )介绍
Calendar是Template提供给我们的standard object.可以使我们方便的为日期型字段提供日期的选择列表.form中设置日历方法:1. 为日期型字段指定LOV(ENABLE_LIST_LAMP)2. 在字段的KEY–LISTVAL事件中编写代码:Calendar.showCalendar Package包含如下几个Procedure:1. Calendar.sho…

人工智能对地球环境科学的推进
一项德国耶拿[1]和汉堡[2]科学家在《自然》杂志发起的研究表明,人工智能可以有效地推进我们对于地球气候系统的理解。特别是在当前深度学习的潜力还未被完全开发的情况下。在人工智能的帮助下一些复杂的动态环境,如飓风,森林火灾,…

从概念到应用,终于有人把数据挖掘讲明白了
作者:陈封能(Pang-Ning Tan)、迈克尔斯坦巴赫(Michael Steinbach)等来源 | 大数据(ID: hzdashuju)【导语】数据采集和存储技术的迅速发展,加之数据生成与传播的便捷性&am…

C++11中default的使用
在C11中,对于defaulted函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量。 C的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷…

Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应...
杂家前文Android颜色对照表只有颜色和十六进制,有时候需要设置r g b分量的int值,如paint.setARGB(255, 127, 255, 212);就需要自己计算下分量的各个值。这里提供一个带有r g b分量的int型的颜色表。注意paint.setAlpha()及paint.setARGB(&…

【redis】c/c++操作redis(对于hiredis的封装)
前言 最近一直在学习redis,通过c/cpp来执行redis命令,使用的是hiredis客户端来实现的。 先简单贴一下代码 头文件 #include <vector> #include <string> #include <hiredis/hiredis.h> typedef enum en_redisResultType {redis_reply_…
OpenCV代码提取:transpose函数的实现
OpenCV中的transpose函数实现图像转置,公式为:目前fbc_cv库中也实现了transpose函数,支持多通道,uchar和float两种数据类型,经测试,与OpenCV3.1结果完全一致。实现代码transpose.hpp:// fbc_cv …

只给测试集不给训练集,要怎么做自己的物体检测器?
9 月5 日,下周四,大家期待已久的由《动手学深度学习》作者,亚马逊首席科学家亲自带领的「深度学习实训营」就要在北京开营了。今天,李沐已经把这次深度学习实训营白天的教学内容和代码上传到 Gituhub 和 D2L.ai 网站了,…

MYSQL忘记登录密码
1、关闭Mysql: 如果 MySQL 正在运行,首先杀之 killall -TERM mysqld 2、另外的方法启动 MySQL :bin/safe_mysqld --skip-grant-tables 3、可以不需要密码就进入 MySQL 了。 然后就是 >use mysql>update user set passwordpassword(&qu…
OpenCV代码提取:flip函数的实现
OpenCV中实现图像翻转的函数flip,公式为:目前fbc_cv库中也实现了flip函数,支持多通道,uchar和float两种数据类型,经测试,与OpenCV3.1结果完全一致。实现代码flip.hpp:// fbc_cv is free softwar…

NLP这两年:15个预训练模型对比分析与剖析
作者 | JayLou来源 | 知乎前言在之前写过的《NLP的游戏规则从此改写?从word2vec, ELMo到BERT》一文中,介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里,模型预训练的方法又被Google、Facebook、微软、百度、O…

大三下学期第一周总结
本周以是开学第一周了,在生活方面,生活琐事确实变多了起来。每天上课,看着老师熟悉的面庞,如履春风。感觉学习没有那么多的陌生恐惧。学习是一方面,身体锻炼不能落下。一周至少保证三小时及其以上的运动。身体是革命的…

AD rodc扩展报错
AD rodc扩展报错AD RODC抢夺FSMO五大角色后,架构扩展报错,解决办法参考链接:http://support.microsoft.com/kb/949257/en-us

Dropout、梯度消失/爆炸、Adam优化算法,神经网络优化算法看这一篇就够了
作者 | mantch来源 | 知乎1. 训练误差和泛化误差对于机器学习模型在训练数据集和测试数据集上的表现。如果你改变过实验中的模型结构或者超参数,你也许发现了:当模型在训练数据集上更准确时,它在测试数据集上却不⼀定更准确。这是为什么呢&am…

入行AI,你需要一本Python机器学习入门
目前机器学习红遍全球。男女老少都在学机器学习模型,分类器,神经网络和吴恩达。你也想成为一份子,但你该如何开始?今天小编推荐这本《Python机器学习》教你快速入门。01什么是机器学习?从出生的那天起,…
通过transpose和flip实现图像旋转90/180/270度
在fbc_cv库中,提供了对图像进行任意角度旋转的函数rotate,其实内部也是调用了仿射变换函数warpAffine。如果图像仅是进行90度倍数的旋转,是没有必要用warpAffine函数的。这里通过transpose和flip函数实现对图像进行顺时针90度、180度、270度的…

DIY强大的虚拟化环境-技术可行性部分
【技术可行性部分】大体的cpu支不支持呀,实际效果使用呀,截图效果截图嵌套虚拟化[esxi,xenserver,Hyper-V]嵌套虚拟化:经过各种查资料,和测试验证[只测过intel的,amd的有类似的文章请去下面的资…

C++11中rvalue references的使用
Rvalue references are a feature of C that was added with the C11 standard. The syntax of an rvalue reference is to add && after a type.为了支持移动操作,C11引入了一种新的引用类型----右值引用(rvalue reference)。所谓右值引用就是必须绑定到右…
AIの幕后人:探秘“硬核英雄”的超级武器
作者 | 云计算的阿晶 出品 | AI科技大本营(ID:rgznai100) 掐指一算八年之前,那时正是国内互联网卯足劲头起飞的一年,各行各业表现都很突出,尤其是与人们生活密切相关的手机,正大踏步地从功能机向智能手机转…

PAT乙级1003
1003 我要通过! (20 point(s))“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。 得到“答案…

史上最简洁的UITableView Sections 展示包含NSDicionary 的NSArray
这个最典型的就是电话本,然后根据A-Z分组, 当然很多例子,不过现在发现一个很简洁易懂的: 1. 准备数据,定义一个dictionary来显示所有的内容,这个dictionary对应的value全是数组 也就是: A &…