static
作用:修饰变量、函数
变量
全局变量:修饰的全局变量,指定其内部链接,也就是只能本文件使用。
局部变量:修饰的局部变量,改变其生命周期,并不会修改器作用域。
成员变量:只属于类,不属于对象。使用的适合可以通过类名或者对象引用。修饰的成员变量必须在类外单独初始化,如果同时被const 修饰则可以在定义的适合进行初始化。
函数
普通函数:修饰的普通函数,指定其内部链接,也就是只能本文可见。
类成员函数:静态成员函数只属于类,不属于对象。没有this指针,所以它不能访问非静态成员函数 ,和非静态成员变量。 它是用来处理静态成员数据,如果我们非要使用静态成员函数访问非静态成员函数或者非静态成员变量,我们可以间接使用类进行引用。
const
用法:修饰变量,参数,返回值。 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性。const 允许指定语义约束,告诉编译器哪些变量是不可以改变的。
修饰变量:C语言中const将一个变量转化为常变量,存储在静态文本段,只有读取权限,C++中同样会将一个变量转化成常量,C++会对其进行优化,将其放入寄存器中,如果想去内存中读取该数据时,我们可以使用volatile关键字进行修饰,保证其可见性。
修饰指针变量: 如果const位于* 左侧时,不能修改指针所指的对象
如果const位于* 右侧时,不能修改指针的指向,所以必须初始化。
修饰参数:作用是原参数在该函数中不可被改变。
修饰的返回值:也是用const来修饰返回的指针或引用,保护指针指向的内容或引用的内容不被修改,也常用于运算符重载。归根究底就是使得函数调用表达式不能作为左值。
修饰成员变量:该变量只能在初始化列表里初始化。
修饰成员函数:在成员函数后面加上const,const修饰this指针所指的的对象,也就是保证调用该成员函数的对象,在成员函数内部不会改变。(改变权限,权限可缩小,但是不可扩大)
如何修改一个const修饰的变量?
使用volatile修饰该变量,保证该变量的在内存中的可见性。