关键字 | 含义 | 语法用例 | 说明 |
friend | 友元函数 | class A { friend void f(int x); friend void B::g(int x); }; | 1. 友元函数在类的内部声明; 2. 在友元函数的内部,可以调用该类的公有、私有和保护成员; 3. 友元函数在类的外部有过声明和定义,不是类的成员函数; 4. 不可以把其他类的私有函数或保护函数定义为友元函数。 |
友元类 | class A { friend class B; }; | 1. 友元类在类的内部声明; 2. 在友元类的内部,可以调用该类的公有、私有和保护成员。但不代表在该类的内部,可以调用友元类的私有和保护成员; 3. 友元类在类的外部有过声明和定义,不是类的子类; 4. 该类友元类的友元类,不是该类的友元类。 | |
explicit | 显式调用构造函数 | class A { public: explicit A(int x); explicit A(int x, int y = 0, int z = 0); }; | 1. 只能显式调用,不能隐式调用类的构造函数。 比如,A a(1);是正确的,A a = 1;是错误的。 2. 只适用于修饰单参数或只有一个参数没有默认值的多参数构造函数,因为无参数或一般的多参数构造函数本身就是显式调用。 |
01-31
945
02-22
1299