友元函数
- 可以访问所在类的私有成员
- 友元的声明不受限定符限制, 可以在类的任意位置声明
友元类
- 友元类的所有成员函数变成另一个的成员函数
- 友元关系是单方面的,如果需要相互构成友元关系,则需要相互声明
- 友元关系不能传递
内部类
- 可以通过对象访问外部类的私有成员, 类似于友元类,外部类不可以访问内部类的私有成员
- 内部类可以直接访问外部类的静态成员
class C
{
public:
//D是内部类, D是C的友元类
class D
{
public:
void displayC(const C& c)
{
cout << c._c << endl;
cout << c._sc << endl;
cout << C::_sc << endl;
//内部类可以直接访问外部类的static成员
cout << _sc << endl;
}
private:
int _d = 20;
};
private:
//E是内部类
class E
{
private:
int _e = 30;
};
int _c = 10;
static int _sc;
};
int C::_sc = 100;