gpt4 book ai didi

c++ - 友元函数及实现

转载 作者:行者123 更新时间:2023-11-30 01:16:42 25 4
gpt4 key购买 nike

我遇到了以下代码

class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
....
}
};

我在这里有点困惑

        friend int Der1Fn()
{
//This has an implementation .Why is it a friend then ? since it can access the private/protected variables of the ExDer1 class ?
}

通常我希望看到类似下面的内容

friend int Der1Fn(); //No implementation. Indicating that the Der1Fn is a method outside this class

这基本上意味着函数 int Der1Fn() 将访问类 ExDer1 的私有(private)变量。但是,这有一个实现。谁能解释一下这是什么意思?

更新:

所以如果我有下面的代码

class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
std::cout << "Hello World";
}
};

int main()
{
Der1Fn(); // error C3767: 'Der1Fn': candidate function(s) not accessible
//.....
}

如何调用 Der1Fn?

最佳答案

friend 函数(或类)也可以在类外或类内定义。如果您在内部定义它,您应该在正确的范围内提供匹配声明,否则将进行参数依赖查找。

下面的例子在逻辑上是一样的:

示例 1:

int Der1Fn();

class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
....
}
};

示例 2(推荐):

int Der1Fn()
{
....
}

class ExDer1 : public ExBase
{
public:
friend int Der1Fn();
};

How do I call Der1Fn ?

this一样简单.

关于c++ - 友元函数及实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25989751/

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