我对 C++ 中的朋友函数有疑问。我知道如果一个函数被定义为一个类的友元函数,它可以访问任何成员变量或函数,无论它是私有的、受保护的还是公共的。最近在使用 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;
}