答案

可以。

但是 ...... inline 修饰虚函数不是所有情况均可以生效的,必须满足以下两点:

  • 虚函数被当做普通函数调用。

通过对象调用则是将虚函数当做普通函数调用;

若通过指针或者应用调用,则将通过多态调用虚函数。

详情

  • 虚函数体足够小。

原因

内联是在编译期间建议编译器内联,而虚函数的多态性是在运行期间。编译器无法知道运行期调用哪个代码,因此虚函数表现为多态性时(运行期)不可以内联。

(SAW:Game Over!)

C/Cpp / 虚函数是否可以用 inline 修饰相关推荐

  1. C/Cpp / 虚函数是否可用 static 修饰

    答案 不能. 原因 因为在多态时,父类调用虚函数的过程如下: (1)使用 this 指针找到虚函数表指针: (2)通过虚函数表指针获取到虚函数表. (3)通过指针偏移获取实际的虚函数的指针. (4)通 ...

  2. 虚函数、纯虚函数、虚继承、多继承

    来源:http://www.tnove.com/?p=57 C++的一个特征是多太,其中多态主要表现在 1.编译时多态  函数overload实现 2.运行是多态  虚函数override实现 其中虚 ...

  3. C++——虚函数、虚析构函数、纯虚函数、抽象类

    目录 一.虚函数 1.什么是虚函数? 2.虚函数的作用 3.虚函数的参数 4.虚函数代码示例 二.虚析构函数 1.什么是虚析构函数? 2.虚析构函数的作用 3. 构造函数 4.为什么构造函数不能是虚函 ...

  4. C++虚函数,虚函数表,虚继承,虚继承表

    一.虚函数 类中用virtual关键字修饰的函数. 作用:主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的 ...

  5. C++——多态|虚函数|重写|虚表

    文章目录 1. 多态的概念 1.1 概念 2. 多态的定义及实现 2.1多态的构成条件 2.2 虚函数 2.3虚函数的重写 虚函数重写的三个例外: 2.4 普通调用和多态调用: 2.5 C++11 o ...

  6. 虚函数(virtual)可以是内联函数(inline)吗?

    •虚函数可以是内联函数,内联是可以修饰虚函数的,但是当虚函数表现多态性的时候不能内联. •内联是在编译器建议编译器内联,而虚函数的多态性在运行期,编译器无法知道运行期调用哪个代码,因此虚函数表现为多态 ...

  7. inline修饰虚函数问题

    inline修饰虚函数问题 虚函数是否可以内联? 虚函数是否可以内联? 一般来说,inline是编译时的行为,虚函数是在程序执行时的行为,因此编译器一般会拒绝对虚函数进行内联! 该博文为原创文章,未经 ...

  8. 虚函数可以用inline吗?

    如果虚函数通过对象被调用,倒是可以inlined,但大部分虚函数调用动作是通过对象的指针或引用完成的,此类行为无法被inlined. inlined意味着编译期将调用端的调用动作被函数本体取代,若无法 ...

  9. C/Cpp / C++ 构造函数和析构函数可以是虚函数吗

    答案 构造函数不可以是虚函数,而析构函数可以且常常是虚函数. 原因 1.构造函数不可以是虚函数 当类中声明虚函数时,编译器会在类中生成一个虚函数表,虚函数表是一个存储成员函数指针的数据结构. 虚函数表 ...

最新文章

  1. CodeForces - 125C Hobbits' Party(思维+构造)
  2. java junit 怎么写_使用JUnit测试java代码
  3. Visual Studio 2005中一个需要小改进的地方
  4. CSU 1120 病毒
  5. 9张图带你领略AI态势!
  6. JavaScript 类型判断的那些事
  7. linux下C获取系统时间的方法
  8. C语言scanf中%%,C语言scanf()和gets()及printf()和puts()的区别
  9. java中成绩转换_成绩转换
  10. autobuddy in mfc导致的错误
  11. Java实现随机抽奖
  12. TCP三次握手(详解)
  13. JS获取当前时间的前几天、前几周、前几个月、前几年的时间
  14. 究极摸鱼挂科王终于击败了无敌可怕Vulkan大魔王
  15. Qt 信号槽的应用(三)
  16. Prometheus监控系列--“普罗米修斯“ 入门 | 初识 | 简述 | 超详细
  17. Java、Android工具整理 - 单位换算
  18. JS、JSP、JQuery区别
  19. 清华北大计算所自动化所计算机夏令营详细攻略
  20. 来看看中美互联网差异

热门文章

  1. 单链表带头结点不带头结点
  2. java获得服务器路径的几中方法
  3. VC++动态链接库(DLL)编程深入浅出(zz)
  4. request.getRealPath不推荐使用
  5. linux fedora安装simplescreenrecorder
  6. 【收藏】Docker安装微信
  7. python3 sorted排序代码示例
  8. kafka副本注意点
  9. 【收藏】k8s: pod has unbound PersistentVolumeClaims问题解决
  10. Django 3.2.5博客开发教程:体验django模板