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