【发布时间】:2013-12-31 06:35:49
【问题描述】:
据我所知,类中定义的每个非静态成员函数都是隐式内联的。 现在我想知道这对静态成员函数是否有效,考虑到我可以在不同的翻译单元中多次定义该函数。
举个例子:
class Foo {
public:
static void static_f(void) { std::cout << static_data << std::endl; } //Is it inline?
static void static_f2(void); //I guess it isn't
private:
static int static_data;
int non_static_data;
};
PS:在这个文件 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf) 我发现了这行:
9.4.1 静态成员函数 [class.static.mfct] 1 [ 注意:9.3 中描述的规则适用于静态成员函数。 ——尾注]
之前在第 9.3 节中:
可以在其类定义中定义(8.4)成员函数,在 在这种情况下,它是一个内联成员函数 (7.1.2) [...]
【问题讨论】:
-
是的,但如果您担心的话,输入
inline关键字不会有任何害处。 -
函数将是
inline,这并不意味着它将被内联
标签: c++ function static inline