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; //无法通过编译,非虚函数重载
};

(之前听过,但是没看过结构体重载 ==)

如果没有使用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(); //1
virtual void infor(); //2
virtual void vmendd(); //3
virtual void test(int x);//4
virtual void splle(); //5
};

上面的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;
};

添加了override以后,会在编译器override修饰符则可以保证编译器辅助地做一些检查,上面的情况无法通过编译

结论
如果派生类里面是像重载虚函数 就加上关键字override 这样编译器可以辅助检查是不是正确重载,如果没加这个关键字 也没什么严重的error 只是少了编译器检查的安全性

---------------------
作者:xiaoheibaqi
来源:CSDN
原文:https://blog.csdn.net/xiaoheibaqi/article/details/51272009
版权声明:本文为博主原创文章,转载请附上博文链接!

C++——override的更多相关文章

  1. Java高并发系列——检视阅读

    Java高并发系列--检视阅读 参考 java高并发系列 liaoxuefeng Java教程 CompletableFuture AQS原理没讲,需要找资料补充. JUC中常见的集合原来没讲,比如C ...

  2. Scala override

    var 变量不能在子类中重写,除非父类是抽象类 在抽象类中var变量不能赋初值 abstract class Person{ val name="" def name1=" ...

  3. [转]How to override HandleUnauthorizedRequest in ASP.NET Core

    本文转自:http://quabr.com/40446028/how-to-override-handleunauthorizedrequest-in-asp-net-core I'm migrati ...

  4. overload、overwrite、override

    1.重载 overload 函数名一样,参数不同(类型.顺序,与返回值类型无关),重载的函数一般在同一个类中 class A { public: void test() {} void test(in ...

  5. 转: Delphi的OverRide、OverLoad和Virtual方法

    http://blog.csdn.net/ckli/article/details/2201418 override 重写 也叫覆盖 .方法的重写Overriding和重载Overloading是Ja ...

  6. Java中@Override的作用

    @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读:2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例如 ...

  7. 扩:new and override

    昨天有个网友问我继承里面的new和override关键词有啥区别,呃,我们来看个例子就知道了 new ==>隐藏父类同名方法  override==>覆盖 定义一个父类: public c ...

  8. sealed、new、virtual、abstract与override 趣解

    1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于 方法或属性时,sealed修饰符必须始终与override一起使用. ...

  9. C#基础知识四之override和new的区别

    override override是派生类用来重写基类方法的.调用的派生类方法,如需调用基类方法用base关键字 override不能重写非虚方法或静态方法. override重写必须用abstrac ...

  10. Overload 和Override 的区别

    Overload 是重载的意思,Override 是覆盖的意思,也就是重写.重载 Overload 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同).重写 ...

随机推荐

  1. mindmanager思维导图软件

    Mindjet 由原名 Mindjet MindManager 简化而来,是倍受赞誉.最好的思维导图软件.所谓思维导图实际上就是一种将你的思想具体化,把你的思维分析整理为有计划有条理的导向图的工作管理 ...

  2. LightOJ 1038 概率dp

    题意:给一个数n,每次除它的一个因子(等概率),问除到1的次数的期望是多少 题解:概率dp,对于一个数x,y是x的因子个数,因子是a1到ay,E(x)=(E(a1)+1)/y+...+(E(ay)+1 ...

  3. 卸载全部appx应用(包括应用商店)

    在PowerShell中粘贴: Get-AppXPackage | Remove-AppxPackage

  4. 解析Ceph: 恢复与数据一致性

    转自:https://www.ustack.com/blog/ceph-internal-recovery-and-consistency/ 作为一个面向大规模的分布式存储系统,故障处理是作为一个常态 ...

  5. JProfiler远程监控 -转

    1. 服务端安装JProfiler(与客户端版本一致) 2. 客户端配置连接: A).session——integration wizards——New remote integration B).选 ...

  6. Python网络编程2018-01-26更新

    前言:使用python3.x写的socket编程,本人wechat:YWNlODAyMzU5MTEzMTQ=. 如果内容有错,请指出来. ssh服务端 # 1.接收一个连接实例 # 2.接收数据 # ...

  7. uva10815(set的应用)

    紫书例题,这道题的例程让我长了知识.以前没有用过cctype和stringstream相关的东西.很实用,值得学习. #include <cctype>的函数 c++中应该是#includ ...

  8. poj2010

    大学招n(n为奇数)个牛 招第i个牛需要ai块钱 第i个牛高考si分 输入招的牛数n 总的牛数c 总的钱数f 以及ai si 问用这些钱招的n个牛高考分数的中位数最大是多少 如果钱不够输出-1 这题结 ...

  9. Docker 容器相关技术

    Docker 依赖的Linux内核特性 Namespaces 命名空间 Control groups (cgroups) 控制组 理解这两个特性,能够更好的帮助我们理解docker的资源分配和管理 N ...

  10. 《Javascript高级程序设计》阅读记录(七):第七章

    <Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...