c++中override的应用
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的应用相关推荐
- C++11中override的使用
override是C++11中的一个继承控制关键字.override确保在派生类中声明的重载函数跟基类的虚函数有相同的声明. override明确地表示一个函数是对基类中一个虚函数的重载.更重要的是, ...
- C++中override overload overwrite
C++中override overload overwrite 1. overload(重载)(不是多态) 重载:是指同一可访问区内被声明的几个具有不同的参数列(参数类型.参数个数.顺序不同)的同名函 ...
- IDEA中@override注解报错信息“Method does not override method from its superclass“
IDEA中@override注解报错信息"Method does not override method from its superclass" 出现问题原因: 1. 首先查看这 ...
- JAVA中 @Override 的作用
如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性, @Override public String toString(){... ...
- Android移动开发之【Android实战项目】activity生命周期与Java中@Override的作用
文章目录 1 @Override 2 oncreate 1 @Override @Override是伪代码,表示重写.(当然不写@Override也可以),不过写上有如下好处: 1.可以当注释用,方便 ...
- Java中@Override的作用
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例 ...
- C#中override和overload的区别
重载应该叫overload,重写叫override:重载某个方法是在同一个类中发生的!重写是在子类中重写父类中的方法. 1.override: 父类:public virtual string T ...
- java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...
本文已经收录自 https://github.com/Snailclimb/JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...
- IDEA中 @override报错的解决方法
原文路径:http://www.cnblogs.com/printN/p/6870036.html ------------------------------------ 今天用IDEA导入一个ja ...
最新文章
- 女黑客发现Firefox高危漏洞获奖4000美元
- python 函数复习
- GCC安装UBUNTU
- android removeRule的使用
- linux脚本里调执行命令,使用shell的-n/-x/-x执行选项调试Shell脚本
- Android手游《》斗地主完整的源代码(支持单机和网络对战)
- 2017android 最强旗舰,2017年世界六大旗舰机,华为第五,第一惊艳全球!
- xp系统打开计算机配置文件,浅析xp系统如何解决开机出现“Windows不能加载本地存储的配置文件“...
- this is a test
- linux设置进程不忽略信号,Linux下后台进程编写中屏蔽信号
- 手机能给电脑装系统吗_使用手机给电脑装系统的方法
- AS/400数据同步专家
- python编辑器怎么放大字体_增大python字体的方法步骤
- 8卡gpu服务器是8个芯片,GPU服务器 4GPU 8GPU 运算卡
- ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置
- 用C++实现魔方并输出步骤
- 解决Ubuntu 20.04挂载NTFS分区不能写入(只读权限)的问题
- 快速通过论文相似度检测
- uvm里如何插入断点_UVM——控制打印信息
- 网狐棋牌代码分析(二) CQueueServiceEvent初步分析