RaymondHuang
RaymondHuang
发布于 2022-12-17 / 56 阅读
0
0

类的友元(friend)

这个东西不太重要,有个印象就行。

首先需要明确的是,在类中声明成员或方法的时候,如果没写访问权限,那就默认是private的:

class Student {
    int age; // private的成员
public:
    int id; // public的成员
}

使用friend关键字,可以修饰三个东西:

① 某一个函数

class Student {
private:
    int age;
    friend void good_friend(Student& s); // 允许外部方法good_friend访问私有属性
};
void good_friend(Student& t) {
    cout << t.age << endl; // 由于该函数是friend,则可以访问age,否则不行。
}

② 某一个类

class Teacher;
class Student {
private:
    int age;
    friend class Teacher; // 允许Teacher类访问私有属性
};

class Teacher {
public:
    void ask(Student& s) {
        cout << s.age << endl; // 由于Teacher类被Student类friend修饰了,故可以访问age,否则不行。
    }
}

③ 类中的某个函数

class Teacher;
class Student {
public:
    void ask(Teacher& t);
}

class Teacher {
private:
    int age;
    friend void Student::ask(Teacher& t); // 允许Student类下的ask方法访问私有属性
}

void Student::ask(Teacher& t) {
    cout << t.age << endl; // 由于Teacher类允许这个方法访问私有属性了,故可以,否则不行。
}


评论