C++中的static 和 const

static和const作用在非类内部的时候,和c语言中是一样的。static可以修饰全局变量、局部变量和函数,都表示范围的限定;const表示只读的意思,不可修改。另外在嵌入式编程中还有volatile关键字,它表示易变,容易被硬件改变(中断或者IO变化等等),它是可以和const一起修饰变量的,易变只读,硬件可以改,用户不能改,表示变量可能会被硬件修改,编译器不要优化它,每次取值都从内存地址来取,而用户却不能改变它。

当作用在类内部的时候,就有区别了,首先static作用在类成员上时候,这个成员可以独立于类的实例而存在,直接通过类型名称来引用,不需要创建实例;而const则表示要保护类实例的成员不被改变。因此static和const不能够同时修饰类成员函数,因此一个表示此函数独立于类实例而存在,另一个表示类实例数据不可改变,语义上不在同意频道;而针对成员变量则可以同时使用static和const,如果类成员只有static修饰,则它需要在类外部进行初始化,如果加上const则可以在类内部定义的时候初始化,并不矛盾。

另外被static修饰的成员函数也只能访问static成员变量,而不能访问普通成员变量,因为函数存在的时可能类实例都还没有,怎么访问呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章