内联与虚函数 财富值53

2016-10-28 13:53发布

#include <iostream>  using namespace std;  class A {     virtual void func()     {         cout << "zz
";         }     virtual void prin(); };  inline void A::prin() {     cout << "h"; }  int main() {     return 0; }

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

2条回答
段曼 - 我很好
2016-10-28 14:27 .采纳回答

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

一周热门 更多>