我在C++中有一个关于friend函数的问题.我理解,如果函数被定义为类的友元函数,它可以访问任何成员变量或函数,无论它是私有的,受保护的还是公共的.最近我使用doxygen来创建文档引用,我发现了友元函数的另一个优点:它与类的关系可以很容易地说明,因为友元函数将在HTML页面中的成员函数之后列出.但是,如果函数未定义为friend,则将其视为全局函数,并且使用doxygen时,它将不会与类文档一起列出.然后我计划将与特定类关系的所有全局函数作为其友元函数.我想知道这是否是一个好习惯.
以下代码显示可以选择一个函数作为友元函数或全局函数.
#include <iostream>
#include <map>
#include <set>
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
#include <numeric>
#include <string>
using namespace std;
class ABCD
{
public:
int a;
int b;
friend void friend_fun(const ABCD &obj);
};
void fun(const ABCD &obj)
{
std::cout<<obj.a<<endl;
std::cout<<obj.b<<endl;
};
void friend_fun(const ABCD &obj)
{
std::cout<<obj.a<<endl;
std::cout<<obj.b<<endl;
};
int main ()
{
ABCD obj;
obj.a = 20;
obj.b = 30;
fun(obj);
friend_fun(obj);
return 0;
}
Run Code Online (Sandbox Code Playgroud)