C++ 在类主体中定义的内联友元函数
通常,当我们直接在类主体中定义成员函数时,它是隐式的C++ 在类主体中定义的内联友元函数,c++,C++,通常,当我们直接在类主体中定义成员函数时,它是隐式的内联的。但是这个呢: class Foo { public: friend void swap(Foo& a, Foo& b) { ... } ... }; 交换是否隐式内联?是。参见标准中的[class.friend/6-7]: 当且仅当类是非本地类(9.8)、函数名不合格且函数具有命名空间范围时,才能在类的友元声明中定义函数 这样的函数是隐式的内联的 对。参见标准中的[class.friend/6-7]:
内联的
。但是这个呢:
class Foo {
public:
friend void swap(Foo& a, Foo& b) { ... }
...
};
交换是否隐式内联?是。参见标准中的[class.friend/6-7]:
当且仅当类是非本地类(9.8)、函数名不合格且函数具有命名空间范围时,才能在类的友元声明中定义函数
这样的函数是隐式的内联的
对。参见标准中的[class.friend/6-7]:
当且仅当类是非本地类(9.8)、函数名不合格且函数具有命名空间范围时,才能在类的友元声明中定义函数
这样的函数是隐式的内联的
我想它一定是内联的。非内联功能不能进入标题内部。类主体必须可插入到标题中。因此,类定义体中提供的所有功能都必须是内联功能。这是允许的吗?在类主体中定义友元函数意味着什么?它是否进入封闭的命名空间而不是成员?@jtbandes是的。这在类所在的名称空间中定义了一个函数。@jtbandes这在Johannes的回答中得到了很好的解释:。我认为它必须是内联的。非内联功能不能进入标题内部。类主体必须可插入到标题中。因此,类定义体中提供的所有功能都必须是内联功能。这是允许的吗?在类主体中定义友元函数意味着什么?它是否进入封闭的命名空间而不是成员?@jtbandes是的。这在类所在的名称空间中定义了一个函数。@jtbandes这在Johannes的回答中得到了很好的解释:。