class 中的内联函数
Inline functions in a class
如果函数体定义在class中,编译器会标记为内联是真的吗? (即使作者没有标注)
示例:
class F {
public:
void func() {
std::cout << "is this inline?\n";
}
};
是的。
[C++14: 9.3/2]:
A member function may be defined (8.4) in its class definition, in which case it is an inline member function (7.1.2), or it may be defined outside of its class definition if it has already been declared but not defined in its class definition. [..]
但是,这是否具有超出关联链接要求的任何可观察到的效果仅与 inline
关键字一样可预测。
此规则的原因是通过 header 将 class 定义(成员函数和所有)包含到多个翻译单元中是合法的。否则,您将遇到 多重引用 链接器错误。
如果在class内声明函数体,相当于在class外定义该函数,并在其前面加上inline关键字,但是否会内联最终取决于编译器。
如果函数体定义在class中,编译器会标记为内联是真的吗? (即使作者没有标注)
示例:
class F {
public:
void func() {
std::cout << "is this inline?\n";
}
};
是的。
[C++14: 9.3/2]:
A member function may be defined (8.4) in its class definition, in which case it is an inline member function (7.1.2), or it may be defined outside of its class definition if it has already been declared but not defined in its class definition. [..]
但是,这是否具有超出关联链接要求的任何可观察到的效果仅与 inline
关键字一样可预测。
此规则的原因是通过 header 将 class 定义(成员函数和所有)包含到多个翻译单元中是合法的。否则,您将遇到 多重引用 链接器错误。
如果在class内声明函数体,相当于在class外定义该函数,并在其前面加上inline关键字,但是否会内联最终取决于编译器。