友元函数和友元类
- 友元函数: 定义在类外的普通函数,不属于任何类,可以访问其他类的私有成员。但是需要在类的定义中声明友元函数
- 友元类: 友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。在另一个类里面也要相应的进行声明
-
class A { public: friend void set_show(int x, A &a); //该函数是友元函数的声明 private: }; void set_show(int x, A &a){} //友元函数定义,为了访问类A中的成员 ------------------------------------友元类 class A { public: friend class C; //这是友元类的声明 private: int data; }; class C //友元类定义,为了访问类A中的成员 { public: void set_show(int x, A &a) { a.data = x; cout<<a.data<<endl;} }; int main(void) { class A a; class C c; c.set_show(1, a); return 0; }
注意:
1. 友元关系不能被继承。
2. 友元关系是单向的,不具有交换性。
3. 友元关系不具有传递性。 要看声明。