C/Cpp / 虚函数是否可以用 inline 修饰
答案
可以。
但是 ...... inline 修饰虚函数不是所有情况均可以生效的,必须满足以下两点:
虚函数被当做普通函数调用。
通过对象调用则是将虚函数当做普通函数调用;
若通过指针或者应用调用,则将通过多态调用虚函数。
详情
虚函数体足够小。
原因
内联是在编译期间建议编译器内联,而虚函数的多态性是在运行期间。编译器无法知道运行期调用哪个代码,因此虚函数表现为多态性时(运行期)不可以内联。
(SAW:Game Over!)
C/Cpp / 虚函数是否可以用 inline 修饰相关推荐
- C/Cpp / 虚函数是否可用 static 修饰
答案 不能. 原因 因为在多态时,父类调用虚函数的过程如下: (1)使用 this 指针找到虚函数表指针: (2)通过虚函数表指针获取到虚函数表. (3)通过指针偏移获取实际的虚函数的指针. (4)通 ...
- 虚函数、纯虚函数、虚继承、多继承
来源:http://www.tnove.com/?p=57 C++的一个特征是多太,其中多态主要表现在 1.编译时多态 函数overload实现 2.运行是多态 虚函数override实现 其中虚 ...
- C++——虚函数、虚析构函数、纯虚函数、抽象类
目录 一.虚函数 1.什么是虚函数? 2.虚函数的作用 3.虚函数的参数 4.虚函数代码示例 二.虚析构函数 1.什么是虚析构函数? 2.虚析构函数的作用 3. 构造函数 4.为什么构造函数不能是虚函 ...
- C++虚函数,虚函数表,虚继承,虚继承表
一.虚函数 类中用virtual关键字修饰的函数. 作用:主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的 ...
- C++——多态|虚函数|重写|虚表
文章目录 1. 多态的概念 1.1 概念 2. 多态的定义及实现 2.1多态的构成条件 2.2 虚函数 2.3虚函数的重写 虚函数重写的三个例外: 2.4 普通调用和多态调用: 2.5 C++11 o ...
- 虚函数(virtual)可以是内联函数(inline)吗?
•虚函数可以是内联函数,内联是可以修饰虚函数的,但是当虚函数表现多态性的时候不能内联. •内联是在编译器建议编译器内联,而虚函数的多态性在运行期,编译器无法知道运行期调用哪个代码,因此虚函数表现为多态 ...
- inline修饰虚函数问题
inline修饰虚函数问题 虚函数是否可以内联? 虚函数是否可以内联? 一般来说,inline是编译时的行为,虚函数是在程序执行时的行为,因此编译器一般会拒绝对虚函数进行内联! 该博文为原创文章,未经 ...
- 虚函数可以用inline吗?
如果虚函数通过对象被调用,倒是可以inlined,但大部分虚函数调用动作是通过对象的指针或引用完成的,此类行为无法被inlined. inlined意味着编译期将调用端的调用动作被函数本体取代,若无法 ...
- C/Cpp / C++ 构造函数和析构函数可以是虚函数吗
答案 构造函数不可以是虚函数,而析构函数可以且常常是虚函数. 原因 1.构造函数不可以是虚函数 当类中声明虚函数时,编译器会在类中生成一个虚函数表,虚函数表是一个存储成员函数指针的数据结构. 虚函数表 ...
最新文章
- CodeForces - 125C Hobbits' Party(思维+构造)
- java junit 怎么写_使用JUnit测试java代码
- Visual Studio 2005中一个需要小改进的地方
- CSU 1120 病毒
- 9张图带你领略AI态势!
- JavaScript 类型判断的那些事
- linux下C获取系统时间的方法
- C语言scanf中%%,C语言scanf()和gets()及printf()和puts()的区别
- java中成绩转换_成绩转换
- autobuddy in mfc导致的错误
- Java实现随机抽奖
- TCP三次握手(详解)
- JS获取当前时间的前几天、前几周、前几个月、前几年的时间
- 究极摸鱼挂科王终于击败了无敌可怕Vulkan大魔王
- Qt 信号槽的应用(三)
- Prometheus监控系列--“普罗米修斯“ 入门 | 初识 | 简述 | 超详细
- Java、Android工具整理 - 单位换算
- JS、JSP、JQuery区别
- 清华北大计算所自动化所计算机夏令营详细攻略
- 来看看中美互联网差异
热门文章
- 单链表带头结点不带头结点
- java获得服务器路径的几中方法
- VC++动态链接库(DLL)编程深入浅出(zz)
- request.getRealPath不推荐使用
- linux fedora安装simplescreenrecorder
- 【收藏】Docker安装微信
- python3 sorted排序代码示例
- kafka副本注意点
- 【收藏】k8s: pod has unbound PersistentVolumeClaims问题解决
- Django 3.2.5博客开发教程:体验django模板