优艾设计网

内联与虚函数?

优艾设计网 https://www.uibq.com 2023-01-18 07:36 出处:网络 作者:PS抠图
#include <iostream>using namespace std;class A { virtual void func() { cout << \"zz\"; } virt优艾设计网_在线设计ual void prin(); };inline void A::prin() { cout << \"h\"; }int main()

#include <iostream>using namespace std;class A { Virtual void func() { cout << "zz"; } virt优艾设计网_在线设计ual void prin(); };inline void A::prin() { cout << "h"; }int main() { return 0; }

为什么inline可以修饰Virtual函数呢?虚函数调用不是要在运行时才能确定吗?而inline不是要在编译时就展开吗?


360U3343054851 11小时前

作用非常有限,编译器通常会无视inline修饰,当然也有例外:inline Virtual只有当对象类型在编译时被确定时才会起作用,也就是调用这个inline Virtual的caller不能是引用或者指针,可以是局部变量,static变量,全局变量。这个时候编译器可能会把这个virt优艾设计网_Photoshop问答ual function优化成普通成员函数inline掉,但是否这么做取决权在编译器,不能得到保证。


惜醉颜那紧扣的指尖离弦的歌离弦 11小时前

理论上说这两者应该是不共存的。但与Virtual不同,inline只是编译器的优化建议,编译器并不一定会采纳优艾设计网_设计LOGOinline这个建议,所以这两者书写上并存还是允许的,不过在实际编译时,inline就不会展开了。另外我看到过一些信息,说Virtual函数也有可能在编译时被确定,从而可以实现inline。不过这都是Compiler Dependent,所以也不能绝对的去说。


0

精彩评论

暂无评论...
验证码 换一张
取 消