我有一个外课A.它有一种方法A::fun.在此方法中,它具有本地或内部类B.我的问题是:是B朋友A吗?
我认为不是.这样对吗?如果是这样,我认为让B一个朋友的课程A非常有益,因为B可以访问A私人和受保护的成员.此外,由于B在方法中是本地的,因此其他人无法访问,因此作为朋友的安全A.如何解决B访问A私人和受保护成员的问题?
Pie*_*aud 14
不,他们不是朋友.
但是本地类对函数外部的名称具有与函数本身相同的访问权限.
标准说:
9.8本地类声明[class.local]
可以在函数定义中声明一个类; 这样的类叫做本地类.本地类的名称是其封闭范围的本地名称.本地类位于封闭范围的范围内,并且对函数外部的名称具有与封闭函数相同的访问权限.本地类中的声明不得使用(3.2)具有封闭范围的自动存储持续时间的变量.
计数的最大区别在于您的本地类只能在函数内部访问.
但在那之后:
不,他们不是朋友.但这有关系吗?
并不是的!考虑这些事实:
所以如果他们是朋友也不重要.您总是会在其成员函数中引用外部类成员.
class A
{
int i;
void doSomething()
{
class B{public: int ii;};
B obj;
obj.ii = i;
}
};
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)