1. override关键字作用: 
    如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译。
  2. 举例子说明

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. 如果没有使用override关键字,上面的写法编译可以通过但是运行的效果与真实意愿(希望重载)不符
  2. 举例子说明
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-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修饰符则可以保证编译器辅助地做一些检查,上面的情况无法通过编译

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

c++ :override的用法相关推荐

  1. C#中的static,interface,virtual,abstract,override的用法

    C# 是面向对象的程序设计语言,每一个函数都属于一个类. Static:当一个方法被声明为Static时,这个方法是一个静态方法,编译器会在编译时保留这个方法的实现. 也就是说,这个方法属于类,但是不 ...

  2. java之面向对象:继承extends、super、覆盖override的用法

    继承的好处: 1 )提高了代码的复用性. 2 )让类与类之间产生了关系,给第三个特征多态提供 了前提. java支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有 ...

  3. C++ override 关键字用法

    override关键字作用: 如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译. 举例子说明 struct Base {virtual ...

  4. override的用法

    override用于重载父类成员函数 override关键字用于父类有虚成员函数,子类成员函数进行父类成员函数重载时,当父类没有该虚成员函数时,会进行报错. 例如: 父类:(virtual 钱包) 子 ...

  5. JAVA中 @Override 的作用

    如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override  系统可以帮你检查方法的正确性, @Override public String toString(){... ...

  6. java override报红_Eclipse @override报错解决

    第一种解决方案: @Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现 ...

  7. eclipse @override 报错 解决

    第一种解决方案: @Override是JDK5就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可 ...

  8. Eclipse @override报错

    我想这个问题肯定困扰了很多人,我也不例外.新公司用的东西多多少少会与我们以前公司的有所不同.所以这个问题也时常伴随在我们身边. 第一种解决方案: @Override是JDK5 就已经有了,但有个小小的 ...

  9. C++ override解释

    C++ override从字面意思上,是覆盖的意思,实际上在C++中它是覆盖了一个方法并且对其重写,从而达到不同的作用.在我们C++编程过程中,最熟悉的就是对接口方法的实现,在接口中一般只是对方法进行 ...

最新文章

  1. 常用电脑密码破解技巧
  2. python多线程下载m3u8文件,python 实现多线程下载m3u8格式视频并使用fmmpeg合并
  3. 变压器轻载是什么意思?
  4. Shell程序设计 | 基本语法 :变量、I/O、算术运算、条件判断、流程控制、函数
  5. Django环境搭建
  6. CryEngine3 引擎非商业用途将免费
  7. Python—开始编程
  8. 直播丨 SQL大赛冠军怀晓明:深入解析Oracle存储过程中的性能瓶颈
  9. linux malloc core,Linux上使用的malloc版本
  10. Ajax 加载数据 练习 自我有些迷糊了,写的大概请谅解 ^ _ ^
  11. COMMAND NOT SUPPORTED 解决方法
  12. dxdiag 的使用
  13. 搭建DEM企业管理器
  14. Java SE 易错题
  15. linux7 inittab没有,CentOs7 7个运行级别介绍,(CentOs7 inittab在使用systemd时不再使用)...
  16. 协助医学未来的10项有前途的技术
  17. bean覆盖 springboot_如何在@SpringBootTest中使用Mock覆盖bean?
  18. 电脑变卡,电脑用久了会变卡怎么办?让电脑变得流畅方法图解
  19. 信息安全CISP认证-大家关心哪些问题?
  20. JAVA版本微信管家平台—JeeWx 捷微 4.1 微服务版本发布,微信砍价活动闪亮登场!...

热门文章

  1. 三代身份证设计曝光,集社保、指纹等功能于一体...
  2. mysql 解决了幻影读_MySQL到底能否解决幻读问题
  3. leetcode刷题java、c++、go语言三合一版本 谷歌师兄的刷题笔记、东哥的算法小抄、 Guide哥的Java面试突击版
  4. sniffer简单使用
  5. android新闻项目、饮食助手、下拉刷新、自定义View进度条、ReactNative阅读器等源码...
  6. App邀请机制如何实现?如何快速邀请拉新?
  7. 面试真题:1亿张彩票堆起来有多高?!
  8. AR系列路由器产品介绍
  9. 计算机硬件简介ppt,_计算机硬件简介.ppt
  10. bzoj1583 [Usaco2009 Mar]Moon Mooing 哞哞叫