static
表示静态关键字,可以用来修饰成员变量与成员函数---静态成员可以通过双冒号来表示,即<类名>::静态成员名
static修饰成员变量
特点:
(1)static修饰的成员变量属于类不属于具体的对象
(2)static成员变量的内存在程序开始运行时分配,程序结束时释放内存
(3)static成员变量对于所有的对象是共享的,并在对象创建之前就已经产生了
(4)静态成员使用前必须初始化,否则会在linker(链接)步骤时出错
(5)在成员函数中可以正常访问静态成员变量
(6)对于公有静态成员变量,可以不需要构造对象之间访问,对于私有静态成员变量则不行
static修饰成员函数
语法:static 函数返回值 函数名 (参数列表)
特点:
(1)不能访问非静态成员,只能访问静态成员
(2)可以被对象直接使用
(3)可以通过类名之间访问
(4)不能使用this指针,与类关联,不与对象关联,在调用静态函数时,可以在没有对象时调用。
const关键字
const成员变量
const成员变量只能在初始化列表中初始化
class A
{
public:
A(int x):x(x){}
const int x;
};
int A::y=10;
const成员函数
(1)防止成员函数修改非静态成员变量的值,但可以修改静态成员变量(仍然可以读取所有成员变量的值)
(2)const成员函数只能调用const成员函数,非const成员函数则没有限制
(3)const成员函数也可以与同名非const成员函数构成函数重载(本质上修饰的是this指针,因此重载方式为类型不同)------创建const对象时调用的为const修饰的成员函数