虚函数不应该是inlined(More Effective C++ 笔记)
在实际运行中,虚函数所需的代价与内联函数有关。
实际上虚函数不能是内联的。
这是因为“内联”是指“在编译期间用被调用的函数体本身来代替函数调用的指令,”
但是虚函数的“虚”是指“直到运行时才能知道要调用的是哪一个函数。”
如果编译器在某个函数的调用点不知道具体是哪个函数被调用,你就能知道为什么它不会内联该函数的调用。
这是虚函数所需的第三个代价:你实际上放弃了使用内联函数。(当通过对象调用虚函数时,它可以被内联,但是大多数虚函数是通过对象的指针或引用被调用的,这种调用不能被内联。
因为这种调用是标准的调用方式,所以虚函数实际上不能被内联。)
现在的编译器一般总是忽略虚函数的的inline指令。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步