如果在类中定义了函数体,编译器会将其标记为内联吗? (即使没有作者标记)
示例:
class F {
public:
void func() {
std::cout << "is this inline?\n";
}
};
答案 0 :(得分:4)
是
[C++14: 9.3/2]:
成员函数可以在其类定义中定义(8.4),在这种情况下,它是内联成员函数(7.1.2),或者可以在外部定义如果已经声明但未在其类定义中定义,则为其类定义。 [..]
但是,除了相关的链接要求之外,这是否具有任何可观察到的影响,这与inline
关键字一样可预测。
这个规则的原因是通过标题将类定义 - 成员函数和所有 - 包含到多个翻译单元中是合法的。否则你会有多个引用链接器错误。
答案 1 :(得分:0)
如果在类中声明函数体,它等同于在类外部定义该函数并在其前面加上inline关键字,但它是否将被内联最终取决于编译器。