在 .h 文件中编写一个函数并在其后立即实现(隐式内联),同时使用 virtual 关键字:
virtual void g(){cout<<"is Inline?"};
虚函数是不是因为函数是在.h中实现的,所以就没有意义了? 这是否被视为内联?
最佳答案
Is the virtual functionality meaningless because the function is implemented in the .h?
没有。 virtual
和inline
是完全独立的概念。
virtual
表示要调用的函数是根据调用对象的动态类型选择的,如果需要,可以在运行时选择。
inline
意味着您可以在多个翻译单元中定义函数,并且必须在使用它的任何翻译单元中定义它。这是必要的(对于某些编译器)以允许函数被内联,但并不强制所有调用都被内联。特别是,虚拟调用通常不会被内联(除非在编译时可以确定动态类型),因此 virtual
在这里肯定会保留其含义。
Is this considered to be an inline?
是的,但是(如上所述)并不意味着所有调用都将被内联。
关于c++ - 在 header 中实现的隐式内联虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090754/