首页后端开发ASP.NETC++11新特性 - 多态和虚函数,override说明符

C++11新特性 - 多态和虚函数,override说明符

时间2024-01-31 00:47:03发布访客分类ASP.NET浏览378
导读:收集整理的这篇文章主要介绍了C++11新特性 - 多态和虚函数,override说明符,觉得挺不错的,现在分享给大家,也给大家做个参考。@H_304_0@多态和虚函数多态是C++的重要特征之一,同时也是初学者比较难理解的特征。先来看一个简单...
收集整理的这篇文章主要介绍了C++11新特性 - 多态和虚函数,override说明符,觉得挺不错的,现在分享给大家,也给大家做个参考。@H_304_0@多态和虚函数

多态是C++的重要特征之一,同时也是初学者比较难理解的特征。先来看一个简单的例子:

代码很简单,按照作者自己的话描述一下上述代码中多态从定义到起作用的要点,应该不会再简单了,从main函数看起:

  1. 基类的指针

  2. 指向派生类的对象

  3. 派生类覆盖了基类中定义的虚函数

这三点是必要条件,缺一不可。

上面的代码还有另外一些有有意思的地方,虽然不影响结果,但还是了解一下为好。派生类中重新定义(覆盖)基类中虚函数时:

  1. virtual关键词不是必须

  2. 不必将函数声明为public

覆盖失败的情况

虚函数的覆盖要求两个函数的签名必须一致。例如下面的代码:

由于sub2::F1的签名和base::f1的签名不一致,所以无法实现多态。

也许你会觉得这个错误太明显了,根本不会发生。那是因为本例中的成员函数太简单了。在实际的开发中随着开发规模的扩大,类的继承关系会变得越来越深,成员函数的参数也会越来越多,经常会遇到派生类中定义的成员函数的签名和覆盖对象的签名不一致的而导致覆盖失败的情况。

而且要命的是,这种错误不会产生编译错误,不容易被发现。

override说明符

为了解决这个问题,C++11中引入了一个方法:在声明、定义派生类中的覆盖函数时使用Override说明符:

由于明确的函数的用意,所以当编译器无法在基类中找到相同签名的虚函数的时候,就会产生编译错误。

作者感受

更好运用语言本身的功能,不放弃任何自动查出错误的机会,这应该成为C++程序员的习惯。也算是工匠精神的体现吧。

相关文章:

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

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

相关视频:

AndROId6.0新特性

以上就是C++11新特性 - 多态和虚函数,override说明符的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: C++中的四种强制类型转换_基本用...下一篇:C++11新特性- 纯虚函数和final说...猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: C++11新特性 - 多态和虚函数,override说明符
本文地址: https://pptw.com/jishu/593259.html
javascript怎么设置input框为只读 聊聊Node.js中的path、os和url模块

游客 回复需填写必要信息