c++ - 在 header 中实现的隐式内联虚函数

标签 c++ function header virtual inline

在 .h 文件中编写一个函数并在其后立即实现(隐式内联),同时使用 virtual 关键字:

virtual void g(){cout<<"is Inline?"};

虚函数是不是因为函数是在.h中实现的,所以就没有意义了? 这是否被视为内联?

最佳答案

Is the virtual functionality meaningless because the function is implemented in the .h?

没有。 virtualinline是完全独立的概念。

virtual 表示要调用的函数是根据调用对象的动态类型选择的,如果需要,可以在运行时选择。

inline 意味着您可以在多个翻译单元中定义函数,并且必须在使用它的任何翻译单元中定义它。这是必要的(对于某些编译器)以允许函数被内联,但并不强制所有调用都被内联。特别是,虚拟调用通常不会被内联(除非在编译时可以确定动态类型),因此 virtual 在这里肯定会保留其含义。

Is this considered to be an inline?

是的,但是(如上所述)并不意味着所有调用都将被内联。

关于c++ - 在 header 中实现的隐式内联虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090754/

相关文章:

c++ - 简化我的程序以将数字从一个基数转换为另一个基数

c++ - C++中的停止代码

c - 阿杜诺 C : undefined reference to `readArms()'

使用模板的 C++ 方法定义

c++ - 这个发布/检查更新类是否可以用于单个写入器 + 读取器使用 memory_order_relaxed 或获取/释放以提高效率?

c++ - 无法将数组传递给排序函数(需要对列而不是行进行排序)

c - 对函数的 undefined reference ,但已全部定义

jquery - Jquery中如何从另一个函数调用一个函数

javascript - 向下滚动时使 div 移出屏幕(顶部)

c++ - 查找 include 指令使用了哪个文件