static和const关键字的区别
1. static关键字
- static局部变量将一个变量声明为函数的局部变量,而且这个局部变量在函数返回后不会被释放,而是继续保留在内存中
- 在模块内的static全局变量和函数可以被模块内的函数访问,但不能被模块外其他函数访问
- static修饰类成员变量属于整个类所拥有,对类的所有对象只有一份拷贝
- static修饰成员函数表示此成员函数属于整个类拥有,这个函数不接受this指针,因而只能访问类的static成员变量,const成员函数不能声明为虚函数
2. const关键字
- 修饰一个变量为只读
- 声明常量指针和指向常量
const
修饰函数形参,表明它是一个输入型参数,在函数内部不能修改其值- 对于类的成员函数,若指定其为
const
类型,则表明其是一个常函数,不能修改类的成员变量,非const对象既能调用const成员函数,也能调用非const成员函数,const对象只能调用const成员函数 - 对于类成员函数,有时候必须指定其返回值为
const
类型,以使得返回值不为左值
型,以使得返回值不为左值**