友元类及友元函数

友元函数

  • 可以访问所在类的私有成员
  • 友元的声明不受限定符限制, 可以在类的任意位置声明

友元类

  • 友元类的所有成员函数变成另一个的成员函数
  • 友元关系是单方面的,如果需要相互构成友元关系,则需要相互声明
  • 友元关系不能传递

内部类

  • 可以通过对象访问外部类的私有成员, 类似于友元类,外部类不可以访问内部类的私有成员
  • 内部类可以直接访问外部类的静态成员

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;

你可能感兴趣的:(C++)