inlineType表示在编译时扩展功能,随着在函数调用的函数体而出替换函数调用;和vitual它是c++多态的必要条件,但为了表现出多态性,您将需要等到执行,要知道什么是真正的函数调用。从表面上看这两个keyword假定同时使用,将生成一个错误。但不会。

先简单说一下虚表的机制:多态的实现是由虚表加以支持的,凡是有虚函数的对象,都会在构造函数開始时构造一个虚表,虚表中的第一个元素通常是对象的类型信息。其它每一个元素存放的是真正函数的地址,假设子类覆盖了父类的虚函数,则相应的位置中的地址就会被改动。可是同一个函数在虚表中的位置即下标是同样的。

当我们用基类指针或者引用调用一个虚函数时,在编译期仅仅知道该函数在某个虚表的第几个位置,可是不知道是父类的虚表还是子类的虚表,仅仅有到执行时才干确定是哪一个虚表。从而表现出多态。但假设你不是使用基类的指针或者引用调用虚函数,或者你调用的不是虚函数,则在编译期间就能够直接找到成员函数的地址,不须要等到执行时才确定,由于此时,调用者是哪个对象已经确定,从而该函数的地址也是确定的。

依据上面的描写叙述,尽管virtual所代表的多态类型是要在执行时确定的,可是假设调用者不是基类的指针或者引用,则该virtual的地址会在编译期间就确定,因而此时能够用inline进行展开。即使使用了基类的指针或引用进行调用,也不会产生错误,此时inline将不会展开,但virtual仍然表现多态性。由于inline毕竟,只是建议,而不是强迫,因此,两者是不矛盾。

版权声明:本文博主原创文章。博客,未经同意不得转载。

最新文章

  1. POJ2417 Discrete Logging
  2. vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法
  3. 《精通MVC5.0》路由笔记
  4. jquery.tmpl.js 模板引擎用法
  5. [函数] Firemonkey 取得 Windows 目前 User 的 Desktop 目录
  6. RequireJS 循环依赖报 模块undefined 处理方案
  7. QCheckBox 的按钮响应
  8. Wilddog - 野狗统计
  9. Ubuntu虚拟机与Window、Arm的通信
  10. js循环array,json,map
  11. _blank开新窗体不符合标准?
  12. C# CRC校验的一点感悟
  13. GridView控件-01-[简单的数据显示]
  14. lsusb命令
  15. 《JAVA与模式》之简单工厂模式
  16. vegas 为盖斯
  17. Go语言运算符
  18. saltstack配置管理之states
  19. find 以及linux 和windows 文件互传
  20. cocos2d-x2.2.3 Layer分析

热门文章

  1. ubuntu12.04安装深度音乐播放器和深度影音
  2. Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例
  3. SetCookies, cookie规范注册表和cookie存储将会优先于设置在HTTP客户端级别中默认的那些
  4. orcl 删除重复的行
  5. error U1087: cannot have : and :: dependents for same target
  6. Android平台调用Web Service:螺纹的引入
  7. PHP Html 弹窗,本页面弹窗子页面
  8. Windows Phone开发(29):隔离存储C
  9. 三星Samsung 4.4.2该负责人制度,简化名单
  10. Scala Hello 示例