类中的内联函数

时间:2015-11-01 14:29:39

标签: c++ class inline

如果在类中定义了函数体,编译器会将其标记为内联吗? (即使没有作者标记)

示例:

class F {
public:
    void func() {
    std::cout << "is this inline?\n";
    }
};

2 个答案:

答案 0 :(得分:4)

  

[C++14: 9.3/2]: 成员函数可以在其类定义中定义(8.4),在这种情况下,它是内联成员函数(7.1.2),或者可以在外部定义如果已经声明但未在其类定义中定义,则为其类定义。 [..]

但是,除了相关的链接要求之外,这是否具有任何可观察到的影响,这与inline关键字一样可预测。

这个规则的原因是通过标题将类定义 - 成员函数和所有 - 包含到多个翻译单元中是合法的。否则你会有多个引用链接器错误。

答案 1 :(得分:0)

如果在类中声明函数体,它等同于在类外部定义该函数并在其前面加上inline关键字,但它是否将被内联最终取决于编译器。