我遇到了以下代码
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的私有变量。但是,这有一个实现。有人可以解释一下这是什么意思吗?
更新:
所以如果我有以下代码
class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
std::cout << "Hello World";
}
};
int main()
{
Der1Fn(); // error C3767: 'Der1Fn': candidate function(s) not accessible
//.....
}
我怎么称呼Der1Fn?
朋友函数(或类)也可以在类外部或内部定义。如果在内部定义它,则应在正确的范围内提供匹配的声明,否则将进行依赖于参数的查找。
以下示例在逻辑上是相同的:
范例1:
int Der1Fn();
class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
....
}
};
示例2(推荐):
int Der1Fn()
{
....
}
class ExDer1 : public ExBase
{
public:
friend int Der1Fn();
};
我怎么称呼Der1Fn?
由于笑着因为这个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句