Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在类主体中定义的内联友元函数_C++ - Fatal编程技术网

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的回答中得到了很好的解释:。