一、静态成员
什么是静态成员:
被static修饰过的成员变量和成员函数都称为静态成员
普通成员的特点:
成员变量:每个类对象中都有各自的一份成员变量,相互之间没有关联
成员函数:隐藏了一个this指针
静态成员的特点:
静态成员变量:
1、存储在bss或者data内存段中,一个类的静态成员变量只有一份,被所有类对象共享
2、静态成员变量的生命周期不再依赖于任何对象,为程序的整个生命周期都存在
3、既然静态成员变量不依赖任何对象,可以通过类名::静态变量名的方式不经过对象直接访问公开的静态成员变量
4、必须在类内使用static声明,类外单独定义、初始化,在定义时不需要加static
类型名 类名::静态变量名 = val;
静态成员函数:
1、没有隐藏的this指针了,所以静态成员函数中无法直接访问普通成员变量和普通成员函数,但是可以直接访问静态成员
变量和静态成员函数
2、虽然不能直接访问普通成员变量和普通成员函数,但是静态成员函数的作用域依然算作类内,因此只要让静态成员函数
获得类对象的指针或引用,则依然有权限访问private、protected的普通成员变量、成员函数
(相当于自己传一个this指针给静态成员函数)
3、调用方式与静态成员变量类似,也不需要依赖对象也可以调用
对象名.静态成员函数名();
对象名->静态成员函数名();