1.static成员
1>静态成员变量在类外进行初始化
2>静态成员变量为所有类对象所共享,不属于任何具体对象,存放在静态区中
3>静态成员函数没有this指针,可访问其他静态成员,但不可访问非静态的
4>非静态成员函数可以访问任意的静态成员变量和静态成员函数
5>突破类域即可访问静态成员,方法如下
类名::静态成员 或 对象.静态成员
6>静态成员变量受访问限定符限定
7>静态成员变量不能再声明处给缺省值初始化,因为缺省值是构造函数初始化列表的,静态成员变量不属于任何对象,不走构造函数的初始化列表
2.友元
1>友元分为友元函数和友元类,在函数声明或类声明前加上friend,并把友元声明放在一个类中
2>外部友元函数可以访问类的私有和保护成员,友元函数仅仅是一个声明,不是类的成员函数
3>一个函数可以是多个类的友元函数
4>友元类的关系是单向的,不具有交换性,也不具有传递性
5>友元会增加耦合度,破坏封装,不宜多用
3.内部类
1>定义:如果一个类定义在另一个类的内部,则该类就叫做内部类
2>内部类是一个独立的类,跟定义在全局相比,它只是受外部类的类域限制的访问限定符限制所以内部类不属于外部类定义的对象
3>内部类默认为外部类的友元类
4.匿名对象
1>定义:用类型(实参)定义出来的对象叫做匿名对象
2>匿名对象什么周期仅在当前行
5.类型转换
1>C++支持内置类型隐式类型转换为类类型对象,需要有内置类型为参数的构造函数
2>在构造函数前加上explicit就不支持隐式类型转换