const:
-
const成员变量为只读变量,在定义时必须初始化。
-
const成员函数不能直接改写成员变量的值,并且只能调用const成员函数。
-
const对象为只读对象,只能调用const成员函数,只能访问const修饰的成员(包括成员对象和成员函数),非const对象也可以调用const成员函数。
-
对于指针来说,有顶层const和底层const
static:
- static全局变量只能在当前源文件中使用,不能在其他文件中使用。
- static局部变量存放在静态存储区,其只在当前函数中起作用,但是其生存周期是直到当前程序结束为止,而局部变量存在于栈中。
- 类中 静态成员变量属于整个类所有,静态成员变量的生命期不依赖于任何对象,为程序的生命周期,也可以通过类名直接访问公有静态成员变量,需要注意的是隐含了this指针。
const和static能否一同使用
修饰同一个类函数
static修饰的函数表示该函数是属于类的,而不是属于某一个对象的,没有this指针。
const修饰的函数表示该函数不能改变this中的内容,会有一个隐含的const this指针。
两者是冲突矛盾的。
同一个变量
要想建立在整个类中都恒定的常量,则可定义const static