c++ - 内联函数和类以及头文件

标签 c++ class inline one-definition-rule

  1. 头文件中定义的函数是否会自动内联?
  2. 如果我在一个类中声明一个函数并在外部使用关键字inline 给出定义,这个函数是内联的吗?如果是,为什么这不违反内联函数应在声明时赋予主体的法律?

最佳答案

在类定义中定义的任何函数都是内联的。任何标记为 inline 的函数也是内联的。

class C {
    int f() { return 3; } // inline
    int g();
    int h();
}


inline int C::g() { return 4; } // inline
int C::h() { return 5; } // not inline

如果所有这些代码都在一个 header 中,并且该 header 在多个翻译单元中使用,您会收到一个提示,说 C::h 有多个定义。 C::fC::g 没问题,因为它们是内联的。这就是如今 inline 的主要作用:允许在多个地方定义相同的函数(前提是定义“相同”)。

关于c++ - 内联函数和类以及头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865634/

相关文章:

c++ - boost::dijkstra_shortest_paths 覆盖内部图权重?

c++ - 我什么时候需要声明自己的析构函数?

c++ - 为内联函数定义多次,怎么可能?

在 C 中从文件调用内联函数

c++ - 计算 OpenCV 中像素值之间的距离长度

c++ - Rcpp:如何将复数从 R 传递到 cpp

c++ - 一个继承类可以有多少个构造函数?

Jquery 清除内联 css

c++ - 如何使用 Prim 算法从输入文件中找到具有给定坐标集的最小生成树?

c++ - 在类中初始化动态内存数组