gpt4 book ai didi

c++ - 在 C++ 中使用友元函数还有什么好处?

转载 作者:搜寻专家 更新时间:2023-10-31 00:17:59 25 4
gpt4 key购买 nike

我对 C++ 中的友元函数有疑问。我理解如果一个函数被定义为一个类的友元函数,它可以访问任何成员变量或函数,不管它是私有(private)的、保护的还是公共(public)的。最近在用doxygen创建文档引用,发现友元函数的另一个优点:它与类的关系很容易说明,因为友元函数会列在HTML页面的成员函数之后。但是,如果该函数没有被定义为友元,它将被视为一个全局函数,使用 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;
}

最佳答案

Doxygen 允许您创建和引用 groups of functions and other global things .这比仅仅为了利用 Doxygen 行为的怪癖而破坏有用的语言级保护更有意义。

关于c++ - 在 C++ 中使用友元函数还有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com