友谊课的“封闭”范围

时间:2009-12-18 05:20:59

标签: c++ scope

Bjarne Stroustrup写道:

“朋友类必须事先在封闭范围内声明,或者在非类范围内定义,并立即将声明为朋友的类封闭”

该语句的第一部分是不是冗余,因为“非类范围立即封闭类”包括“先前在封闭范围内声明”? IE:这两个范围有什么区别?

3 个答案:

答案 0 :(得分:1)

我认为在第一部分中,友元类在类(嵌套)中声明,声明它是朋友。在第二部分中,朋友类在外面声明,就在宣布它为朋友的类之前。

答案 1 :(得分:1)

也许第二部分说“立即封闭”而第一部分没有?所以我从中收集到,如果类在非类范围(即名称空间或全局)中声明,则它可以只是直接封闭的范围(一个向上)。如果它是在一个封闭的范围内声明(想想嵌套类),它可以在你想要的范围之上。

含义以下内容有效:

class Grandpa
{
    class Mother
    {
        class Junior
        {
            friend class Grandpa;
        };

    };
};

仅仅因为GrandpaJunior以上的几个“类范围”。

答案 2 :(得分:-1)

朋友不要让朋友使用朋友。