C/C++中的const ,static
一、const
在C++中:
1、常对象:创建对象时添加const关键字,这个对象就不可以再修改,就有了常属性,就意味着整个对象所有变量不能更改
2、常对象不能调用普通函数,调用成员函数就相当于把对象的this指针给了他,就有被修改的风险
3、常对象只能调用常函数(函数体前加关键字叫常函数),普通对象也能调用常函数,常函数就相当于对this指针添加了const属性
4、常函数与普通函数可以构成重载,不会冲突
5、如果有成员确实需要修改,他又被const修饰,可以对成员添加一个关键字mutable,这样即使是常对象调用了常函数依然可以修改成员
C:
const :常量,为变量保存添加一种保护,保护变量不能被显示修改,提高程序的安全性,当程序没必要修改参数值时,应该加const属性;
const 可以定义常量,const修改初始化过的全局变量就是常量;
二、static
C++:静态成员与静态成员函数
1、类成员被static修饰,就会存储在bss段(此段是由编译器存放的而且大小是固定的),在程序中动态的创建对象时它的静态成员就无法创建,所有的类对象就共享一个静态成员
2、静态成员只能在类中声明不能在类中定义(必须在类外定义) 类型 类名::静态成员名
3、静态成员就是声明在类中的全局变量,在任何位置都可以使用 类名::静态成员名 进行访问
4、静态成员函数:类中的成员函数被static修饰后就变成静态成员函数,所有成员共享一份静态成员函数
5、静态成员函数不会传递this指针,不通过对象也能调用静态成员函数 类名::静态成员函数(参数)
C:
static
修饰全局变量时,作用域会从整个程序变为他所在的.c文件内;
1、静态局部,块:
存储位置会由栈改为静态段;生命周期会改为从定义开始到程序结束;但是使用范围不变;默认值为0;只能初始化一次;
静态函数:
static int func(int num);
static会把外部函数变为内存函数,只能在他所在的.c文件内;
static修饰全局变量和函数的好处,可以防治与其他函数,变量重名冲突