这两个成员函数inline重新virtual种类
2024-09-18 09:35:35
inlineType表示在编译时扩展功能,随着在函数调用的函数体而出替换函数调用;和vitual它是c++多态的必要条件,但为了表现出多态性,您将需要等到执行,要知道什么是真正的函数调用。从表面上看这两个keyword假定同时使用,将生成一个错误。但不会。
先简单说一下虚表的机制:多态的实现是由虚表加以支持的,凡是有虚函数的对象,都会在构造函数開始时构造一个虚表,虚表中的第一个元素通常是对象的类型信息。其它每一个元素存放的是真正函数的地址,假设子类覆盖了父类的虚函数,则相应的位置中的地址就会被改动。可是同一个函数在虚表中的位置即下标是同样的。
当我们用基类指针或者引用调用一个虚函数时,在编译期仅仅知道该函数在某个虚表的第几个位置,可是不知道是父类的虚表还是子类的虚表,仅仅有到执行时才干确定是哪一个虚表。从而表现出多态。但假设你不是使用基类的指针或者引用调用虚函数,或者你调用的不是虚函数,则在编译期间就能够直接找到成员函数的地址,不须要等到执行时才确定,由于此时,调用者是哪个对象已经确定,从而该函数的地址也是确定的。
依据上面的描写叙述,尽管virtual所代表的多态类型是要在执行时确定的,可是假设调用者不是基类的指针或者引用,则该virtual的地址会在编译期间就确定,因而此时能够用inline进行展开。即使使用了基类的指针或引用进行调用,也不会产生错误,此时inline将不会展开,但virtual仍然表现多态性。由于inline毕竟,只是建议,而不是强迫,因此,两者是不矛盾。
版权声明:本文博主原创文章。博客,未经同意不得转载。
最新文章
- POJ2417 Discrete Logging
- vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法
- 《精通MVC5.0》路由笔记
- jquery.tmpl.js 模板引擎用法
- [函数] Firemonkey 取得 Windows 目前 User 的 Desktop 目录
- RequireJS 循环依赖报 模块undefined 处理方案
- QCheckBox 的按钮响应
- Wilddog - 野狗统计
- Ubuntu虚拟机与Window、Arm的通信
- js循环array,json,map
- _blank开新窗体不符合标准?
- C# CRC校验的一点感悟
- GridView控件-01-[简单的数据显示]
- lsusb命令
- 《JAVA与模式》之简单工厂模式
- vegas 为盖斯
- Go语言运算符
- saltstack配置管理之states
- find 以及linux 和windows 文件互传
- cocos2d-x2.2.3 Layer分析
热门文章
- ubuntu12.04安装深度音乐播放器和深度影音
- Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例
- SetCookies, cookie规范注册表和cookie存储将会优先于设置在HTTP客户端级别中默认的那些
- orcl 删除重复的行
- error U1087: cannot have : and :: dependents for same target
- Android平台调用Web Service:螺纹的引入
- PHP Html 弹窗,本页面弹窗子页面
- Windows Phone开发(29):隔离存储C
- 三星Samsung 4.4.2该负责人制度,简化名单
- Scala Hello 示例