Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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++_C++11 - Fatal编程技术网

为什么在类定义中定义友元函数 在C++中,我们允许在类定义中定义一个朋友函数 比如:-

为什么在类定义中定义友元函数 在C++中,我们允许在类定义中定义一个朋友函数 比如:-,c++,c++11,C++,C++11,然后我们可以调用这个函数,就像任何常规函数一样 fun(); 有人能解释一下(举例): 在什么情况下,我们需要在类中定义友元函数 定义 这种不可否认的定义有什么特别之处 只需在类中将函数声明为friend,然后 在外部定义函数 假设您已经知道什么是friend函数,那么您的示例绝对没有特殊意义:您拥有的是一个常规friend函数,它的声明和定义结合在一起 回想一下,友谊需要在“friends”函数的类中声明。之后,可以在某个地方定义函数,您有两个选择: 类外-这是定义友元函数的常用方法,或

然后我们可以调用这个函数,就像任何常规函数一样

fun();
有人能解释一下(举例):

  • 在什么情况下,我们需要在类中定义友元函数 定义

  • 这种不可否认的定义有什么特别之处 只需在类中将函数声明为friend,然后 在外部定义函数


  • 假设您已经知道什么是
    friend
    函数,那么您的示例绝对没有特殊意义:您拥有的是一个常规
    friend
    函数,它的声明和定义结合在一起

    回想一下,友谊需要在“friends”函数的类中声明。之后,可以在某个地方定义函数,您有两个选择:

    • 类外-这是定义友元函数的常用方法,或
    • 在类内部——这就是您的示例所包含的内容

    使用一种方法与使用另一种方法的基本注意事项与您用来决定在类内部或外部定义成员函数的规则相同。

    友元函数可以访问私有类成员(这对于在不是类成员的情况下处理类的运算符重载尤其有用),这个问题是重复的,请使用google next timeLook查找相关问题。主要考虑的是对
    fun
    参数和ADL的隐式转换。还有
    void-fun()
    实际上并不等同于类内定义--
    inline-void-fun()
    是。
    fun();