如果一个成员函数在类内定义,那么它是一个内联函数。例如: struct X { void mem_f() {} //mem_f is inline }; 我的问题是,是否在类内定义的非成员友元函数也会自动变为内联函数。 例如: struct Y { friend void friend_f() {} //is friend_f inline? }; 如果能提供标准中相关的引用或段落,那将非常有帮助。谢谢。
是的,它是这样的。§11.4/5: 如果类是一个非局部类(9.8),函数名未经限定且函数具有命名空间作用域,则可以在类的友元声明中定义函数。 这样的函数隐式地为内联函数。在类中定义的友元函数处于类的词法作用域中。在类外定义的友元函数则不是(3.4.1)。 由于类定义可能在头文件中,因此该函数将被多次定义,因此需要将其定义为 inline。