override是C++11中的一个继承控制保留字,放在派生类成员函数参数列表后面,用来修饰函数。派生类中被override修饰的函数,在父类中有一个与之对应(形参、函数名、返回值都一致)的虚函数,override表示要重写父类的虚函数,一旦函数后面加了override,编译器就会检查父类中是否有和子类中签名匹配的函数,如果没有编译器会报错。

示例代码:

#include "stdafx.h"
#include <iostream>
using namespace std;

class Parent 
{
public:
virtual void Func();
void Func_B();
virtual void Func_C() final{ }
};

void Parent::Func()
{
cout<<"call the function of Parent"<<endl;
}

class Child  : public Parent 
{
public:
void Func() override;//基类声明的虚函数,在派生类中也是虚函数,即使不再使用virtual关键字

/*************************************************************************
void Func_A() override;
父类中没有此方法,添加override编译会报如下错错误:
error C3668: “Child::Func_A”: 包含重写说明符“override”的方法没有重写任何基类方法
*************************************************************************/

/*************************************************************************
void Func_B() override { }
Func_B在父类中不是虚函数,添加override编译会报如下错错误:
error C3668: “Child::Func_B”: 包含重写说明符“override”的方法没有重写任何基类方法
*************************************************************************/

/*
void Func_C() override { }
Func_C在父类中被final修饰,禁止在派生类中被重写
error: Func_C在基类中声明禁止重写 
*/
};

void Child::Func()
{
cout<<"implement the function of Parent"<<endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
Parent objParent;
Child objChild;
return 0;
}

c++中override的应用相关推荐

  1. C++11中override的使用

    override是C++11中的一个继承控制关键字.override确保在派生类中声明的重载函数跟基类的虚函数有相同的声明. override明确地表示一个函数是对基类中一个虚函数的重载.更重要的是, ...

  2. C++中override overload overwrite

    C++中override overload overwrite 1. overload(重载)(不是多态) 重载:是指同一可访问区内被声明的几个具有不同的参数列(参数类型.参数个数.顺序不同)的同名函 ...

  3. IDEA中@override注解报错信息“Method does not override method from its superclass“

    IDEA中@override注解报错信息"Method does not override method from its superclass" 出现问题原因: 1. 首先查看这 ...

  4. JAVA中 @Override 的作用

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

  5. Android移动开发之【Android实战项目】activity生命周期与Java中@Override的作用

    文章目录 1 @Override 2 oncreate 1 @Override @Override是伪代码,表示重写.(当然不写@Override也可以),不过写上有如下好处: 1.可以当注释用,方便 ...

  6. Java中@Override的作用

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

  7. C#中override和overload的区别

    重载应该叫overload,重写叫override:重载某个方法是在同一个类中发生的!重写是在子类中重写父类中的方法. 1.override:   父类:public virtual string T ...

  8. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...

    本文已经收录自 https://github.com/Snailclimb/JavaGuide  (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...

  9. IDEA中 @override报错的解决方法

    原文路径:http://www.cnblogs.com/printN/p/6870036.html ------------------------------------ 今天用IDEA导入一个ja ...

最新文章

  1. 女黑客发现Firefox高危漏洞获奖4000美元
  2. python 函数复习
  3. GCC安装UBUNTU
  4. android removeRule的使用
  5. linux脚本里调执行命令,使用shell的-n/-x/-x执行选项调试Shell脚本
  6. Android手游《》斗地主完整的源代码(支持单机和网络对战)
  7. 2017android 最强旗舰,2017年世界六大旗舰机,华为第五,第一惊艳全球!
  8. xp系统打开计算机配置文件,浅析xp系统如何解决开机出现“Windows不能加载本地存储的配置文件“...
  9. this is a test
  10. linux设置进程不忽略信号,Linux下后台进程编写中屏蔽信号
  11. 手机能给电脑装系统吗_使用手机给电脑装系统的方法
  12. AS/400数据同步专家
  13. python编辑器怎么放大字体_增大python字体的方法步骤
  14. 8卡gpu服务器是8个芯片,GPU服务器 4GPU 8GPU 运算卡
  15. ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置
  16. 用C++实现魔方并输出步骤
  17. 解决Ubuntu 20.04挂载NTFS分区不能写入(只读权限)的问题
  18. 快速通过论文相似度检测
  19. uvm里如何插入断点_UVM——控制打印信息
  20. 网狐棋牌代码分析(二) CQueueServiceEvent初步分析

热门文章

  1. 优化方法的基本认识 overview
  2. turnitin时间
  3. LUA中相同签名函数覆盖
  4. 在Ubuntu11.10下构建hadoop实验环境笔记
  5. Python爬虫-HTMLSession的使用
  6. AIX Study之--AIX网卡配置管理(ent0、en0、et0)
  7. hdu 4495(hash+二分+dp)
  8. hdu 2047(递推)
  9. 《Python 网络数据采集》正则表达式
  10. k8s之VelaQL简单理解