c++ override
2017-10-15 13:25
120 查看
override是C++11中的一个继承控制保留字,放在派生类成员函数参数列表后面,用来修饰函数。override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名。在父类中有一个与之对应(形参、函数名、返回值都一致)的虚函数,override表示要重写父类的虚函数,一旦函数后面加了override,编译器就会检查父类中是否有和子类中签名匹配的函数,如果没有编译器会报错。
http://blog.csdn.net/jolin678/article/details/63695023
#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; }
http://blog.csdn.net/jolin678/article/details/63695023
相关文章推荐
- [c++] final override keyword
- C++ override使用详解
- c++ override 关键字介绍
- C++ 函数重载(overroad) 覆盖(override) 隐藏(hide) 的区别
- C++系列——重载(overload),重写(override),重定义(redefine)
- C++重写(override)、重载(overload)、重定义(redefine)以及虚函数调用
- c++的override关键字
- C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)
- 在win10 64位下编译,提示[C++ Error] E2075 Incorrect project override option: (x86)\borland\cbuilder6\lib\vcl
- C++ override使用详解
- Effective Modern C++ 条款12 把重写函数(overriding function)声明为override
- C++学习之多态及重载(overload),覆盖(override),隐藏(hide)的区别
- c++ override 保留字
- 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别
- C++基础篇--overload重载&override覆盖&overwrite隐藏
- C++中的overload,隐藏、override有什么区别?
- C++关键字final与override
- 关于C++中override与overload的总结和疑问
- c++的override关键字什么意思
- C++:overload, override和overwrite