Bjarne Stroustrup写道:
“朋友类必须事先在封闭范围内声明,或者在非类范围内定义,并立即将声明为朋友的类封闭”
该语句的第一部分是不是冗余,因为“非类范围立即封闭类”包括“先前在封闭范围内声明”? IE:这两个范围有什么区别?
答案 0 :(得分:1)
我认为在第一部分中,友元类在类(嵌套)中声明,声明它是朋友。在第二部分中,朋友类在外面声明,就在宣布它为朋友的类之前。
答案 1 :(得分:1)
也许第二部分说“立即封闭”而第一部分没有?所以我从中收集到,如果类在非类范围(即名称空间或全局)中声明,则它可以只是直接封闭的范围(一个向上)。如果它是在一个封闭的类范围内声明(想想嵌套类),它可以在你想要的范围之上。
含义以下内容有效:
class Grandpa
{
class Mother
{
class Junior
{
friend class Grandpa;
};
};
};
仅仅因为Grandpa
是Junior
以上的几个“类范围”。
答案 2 :(得分:-1)
朋友不要让朋友使用朋友。