• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 详解C++成员函数的override和final说明符的用法

详解C++成员函数的override和final说明符的用法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ override,override,override是什么意思,@override报错,java override等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

override 说明符

可使用 override 关键字来指定在基类中重写虚函数的成员函数。
语法

function-declaration override;
</div>

备注
override 仅在成员函数声明之后使用时才是区分上下文的且具有特殊含义;否则,它不是保留的关键字。
使用 override 有助于防止您的代码中出现意外的继承行为。以下示例演示在未使用 override 的情况下,可能不打算使用派生类的成员函数行为。编译器不会发出此代码的任何错误。

class BaseClass
{
  virtual void funcA();
  virtual void funcB() const;
  virtual void funcC(int = 0);
  void funcD();
};

class DerivedClass: public BaseClass
{
  virtual void funcA(); // ok, works as intended

  virtual void funcB(); // DerivedClass::funcB() is non-const, so it does not
             // override BaseClass::funcB() const and it is a new member function

  virtual void funcC(double = 0.0); // DerivedClass::funcC(double) has a different
                   // parameter type than BaseClass::funcC(int), so
                   // DerivedClass::funcC(double) is a new member function

};

</div>

当使用 override 时,编译器会生成错误,而不会在不提示的情况下创建新的成员函数。

class BaseClass
{
  virtual void funcA();
  virtual void funcB() const;
  virtual void funcC(int = 0);
  void funcD();
};

class DerivedClass: public BaseClass
{
  virtual void funcA() override; // ok

  virtual void funcB() override; // compiler error: DerivedClass::funcB() does not 
                  // override BaseClass::funcB() const

  virtual void funcC( double = 0.0 ) override; // compiler error: 
                         // DerivedClass::funcC(double) does not 
                         // override BaseClass::funcC(int)

  void funcD() override; // compiler error: DerivedClass::funcD() does not 
              // override the non-virtual BaseClass::funcD()
};

</div>


若要指定不能重写函数且不能继承类,请使用 final 关键字。


final 说明符
可以使用 final 关键字指定无法在派生类中重写的虚函数。您还可以使用它指定无法继承的类。
语法

function-declaration final;

class class-name final base-classes

</div>

备注
final 只有在函数声明或类名称后使用时才是区分上下文的且具有特殊含义;否则,它不是保留的关键字。
在类声明中使用 final 时,base-classes 是声明的可选部分。
下面的示例使用 final 关键字指定无法重写虚函数。

class BaseClass
{
  virtual void func() final;
};

class DerivedClass: public BaseClass
{
  virtual void func(); // compiler error: attempting to 
             // override a final function
};

</div>

有关如何指定可以重写成员函数的信息,请参阅 override 说明符"。
下一个示例使用 final 关键字指定无法继承类。

class BaseClass final 
{
};

class DerivedClass: public BaseClass // compiler error: BaseClass is 
                   // marked as non-inheritable
{
};

</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详谈c++11 final与override说明符
  • 详解C++成员函数的override和final说明符的用法
  • C++中overload,override,overwrite的区别详细解析
  • C++中Overload,Override,Hide之间的区别

相关文章

  • 2017-05-28C++命名空间实例解析
  • 2017-05-28非常经典的C语言趣味题目
  • 2017-05-28浅谈C++的浅拷贝出现的错误
  • 2017-05-28详解在C++中显式默认设置的函数和已删除的函数的方法
  • 2017-05-28深入C++四种强制类型转换的总结
  • 2017-05-28浅析iterator与指针的区别
  • 2017-05-28C/C++ 中堆和栈及静态数据区详解
  • 2017-05-28解析取模运算% 和位与运算& 之间的关系详解
  • 2017-05-28C++程序的执行顺序结构以及关系和逻辑运算符讲解
  • 2017-05-28使用C++程序获取新浪行情数据的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 浅谈const变量赋值报错分析
    • c语言全盘搜索指定文件的实例代码
    • C++ 冒泡排序数据结构、算法及改进算法
    • C语言使用openSSL库DES模块实现加密功能详解
    • 如何利用Emacs来调试C++程序
    • C语言时间处理实例分享
    • 基于Windows API实现遍历所有文件并删除的方法
    • 深入串的模式匹配算法(普通算法和KMP算法)的详解
    • vc获取计算机名和ip地址的方法
    • 用C语言的泛型实现交换两个变量值

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有