静态成员 static
- static修饰局部变量 局部变量的生命周期与整个程序的执行期相同,使用范围在局部
- static修饰全局变量 生命周期与整个程序的执行期相同,适用范围仅限于单文件
- static修饰普通的函数 这个函数只能在本文件被使用,其他文件是不可见的
- 类中的数据成员用static修饰
类的静态数据成员为其所用对象共享,不管有多少对象,类中这个静态数据成员只有一份存在于内存中
初始化方式:
static int m;
int CA::m=0;
类中的静态数据初始化,静态成员不属于对象,无法通过对象的操作进行初始化,它是属于类的,初始化的时候不管公有私有都在类外进行
类中的静态数据成员,可以被普通函数访问
- 类中的成员函数用static修饰,静态成员函数不属于任何对象只属于类
静态成员函数在类外定义,因为它不属于对象,多以在这个函数中只能操作类的静态数据和静态函数
常量成员:
类中的常量成员分为两种:常量数据成员,常量函数成员
const int a;//类的常量数据
void add() const;//类的常量函数成员,const必须写在函数的后面
不能对自身的变量进行修改,这是常量函数的特性
只要是this所指的所指的所有数据,受语法的限定,在这个函数里面都不能被修改
除此之外的形参数据,零食变量,不属于this指针指的数据都可以改
优势:
- 根据语法可以帮助我们来防止数据被误修改(写get接口时加const)
- 当对象被说明为常量对象时,只能调用常量成员函数
友元:类的特点是封装,友元是C++为用户提供的打破这种封装(数据隐藏)的分类
友元:分为两种1.友元函数,2.友元类
1.友元函数
友元函数不是对象的成员,不管扎起哪里定义,但是这个函数有权调用类的所有成员(不管是私有还是保护)
friend void a(CA & srcA);//友元函数的声明
void a(CA &srcA)//友元函数定义
{
srcA.a=10;
}//友元即使在类中定义也不属于类
2.友元类
类B为类A的友元类
类B与类A时两个类,友元类B类必须在类外说明,B类所有成员函数都有权访问A类的所有成员
friend class CB//友元类声明
{
};
友元的三个特点
- 单方向
- 不传递
- 不继承