在类中定义的友元函数会自动成为内联函数吗?

8

如果一个成员函数在类内定义,那么它是一个内联函数。例如:

struct X
{
   void mem_f() {} //mem_f is inline
};

我的问题是,是否在类内定义的非成员友元函数也会自动变为内联函数。

例如:

struct Y
{ 
   friend void friend_f() {} //is friend_f inline?
};

如果能提供标准中相关的引用或段落,那将非常有帮助。谢谢。

1个回答

13

是的,它是这样的。§11.4/5:

如果类是一个非局部类(9.8),函数名未经限定且函数具有命名空间作用域,则可以在类的友元声明中定义函数。 这样的函数隐式地为内联函数。在类中定义的友元函数处于类的词法作用域中。在类外定义的友元函数则不是(3.4.1)。

由于类定义可能在头文件中,因此该函数将被多次定义,因此需要将其定义为 inline


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接