C++ 类中定义的静态成员函数是否隐式内联?
据我所知,类中定义的每个非静态成员函数都是隐式内联的。 现在,考虑到我可以在不同的转换单元中多次定义函数,我想知道这对于静态成员函数是否有效 例如:C++ 类中定义的静态成员函数是否隐式内联?,c++,function,static,inline,C++,Function,Static,Inline,据我所知,类中定义的每个非静态成员函数都是隐式内联的。 现在,考虑到我可以在不同的转换单元中多次定义函数,我想知道这对于静态成员函数是否有效 例如: 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
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;
};
class-Foo{
公众:
静态无效静态(无效){std::cout是。
我会引用标准,但你已经引用了
考虑到我可以在不同的翻译单元中多次定义函数
只有当你保证内容是相同的,这是一个非问题
// "Is it inline?" YES.
static void static_f(void) { std::cout << static_data << std::endl; }
// "I guess it isn't" Nope.
static void static_f2(void);
请确保不要将“声明”和“定义”混为一谈——只有在类定义中提供函数体时,这些才适用。这也使您的担心成为一个问题
// "Is it inline?" YES.
static void static_f(void) { std::cout << static_data << std::endl; }
// "I guess it isn't" Nope.
static void static_f2(void);
/“它是内联的吗?”是。
静态空隙静态_f(空隙){std::cout-Yes,但是如果您担心它,那么插入inline
关键字不会有任何影响。函数将是inline
,这并不意味着它将是内联的+1。请注意,尽管静态
或非静态,但如果在类本身内部定义,则所有成员函数都是内联的。