个人以为,C++之所以适合架构设计,很大一个原因就是它可以对将来编程。比如可以通过public/protected/private来限定派生类对基类成员的访问,可以定义抽象类要求派生类必须实现的接口等。

当我们声明/定义了一个虚函数时候,派生类可以选择覆盖这个虚函数,也可以选择不覆盖。关于这一点,C++也提供了必要的方法,来要求派生类覆盖某些方法,这也可以看作是一种对将来编程。

纯虚函数

这并不是一个新技术,功能也非常简单:就是一旦某个基类声明了某个纯虚函数,它的派生类在实例化的时候就必须覆盖这个函数。

1.png

本例中注释掉了sub::f1()方法,所以在第27行就会发生编译错误。

final说明符

一般说来,有要求的覆盖的方法,就应该有禁止覆盖的手段。但是不知道为什么,这个功能到了C++11中才被引入。使用方法也很简单:只要在函数声明的后面添加final说明符即可。

1.png

代码基本没变,只是base::f1()声明的后面换成了final说明符。这时如果定义了sub::f1()方法,就会产生如上图的编译错误。

作者观点

本文根据作者个人的理解,将纯虚函数和final说明符放到一起说明。如有不准确之处,欢迎补充和纠正。

相关文章:

详谈c++11 final与override说明符

C++11新特性中auto 和 decltype 区别和联系

相关视频:

C 语言教程

以上就是C++11新特性- 纯虚函数和final说明符的用法的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:C++11 final
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    网页生成APP,用做网站的技术去做APP:立即创建

    手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包

    • 上一篇:使用C语言怎样清空输入缓冲区?这里有多种方法值得借鉴
    • 下一篇:C++11新特性 - 多态和虚函数,override说明符

    相关文章

    相关视频


    • c语言中goto语句的含义是什么
    • C/C++深度分析
    • C#中GDI+编程10个基本技巧二
    • 应用绝对路径与相对路径
    • C++11新特性- 纯虚函数和final说明符的用...
    • Vue3 事件修饰符
    • vue3 指令
    • vue3 基础语法
    • vue3 组合api和选项api介绍

    视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • Laravel视频教程
    • Vue视频教程

    专题

    C++11新特性- 纯虚函数和final说明符的用法