c++中,关键字const的用法总结:
一、在变量中的用法:
1.修饰一般变量或数组:
在C++中关键字const可以用来修饰一般类型的变量或数组,如布尔(bool)类型、浮点(float,double)类型、字符(char)类型和整数(int)类型等,在修饰这种变量或数组时,const既可以放在类型说明符之前,也可以放在类型说明符之后。
例如:int const i=0;或const int i=0;等
需要注意的是常变量或常数组在定义的时需要进行初始化,并且之后的值不能被更新。
2.修饰指针:
(1)当const放在类型说明符之前时为常量指针:
例如:const char *p = greeting;//指针指向可改变,但是指向的值不可改变。
(2)当const放在类型说明符之后时为指针常量:
例如:char * const p = greeting;//指针的指向不可改变,但是指向的值可以改变。
(3)当类型说明符在const之间时,const既修饰指针又修饰常量:
例如:const char * const p = greeting;//指针的指向和指针指向的值均不可改变。
二、在函数中的用法:
1.修饰函数中参数:
当参数为引用传递时,编译器仅为该参数产生一个别名并不开辟新的内存空间, 该参数和实参为同一块内存空间,如果参数a的值不期望被改变,则可用关键字const来修饰,具体格式为void slove(const A &a),此时a的值不能够在该函数内被修改。
2.const在函数名前面:
当const出现在函数名之前时,说明该函数的返回值是一个常类型,其返回的值不能修改。
3.const在函数名后面:
const放在类中定义的一个成员函数名之后,表示该函数为一个常量成员函数,不能修改该对象内的任何成员, 该函数为只读函数。
三、在类中的用法:
1.修饰数据成员:
关键字const对类中的数据成员的修饰与对普通变量的修饰相似,都是设置为只读数据,但是在类中的常数据成员只能通过构造函数初始化列表进行初始化。
2.修饰成员函数:
const放在类中定义的一个成员函数名之后,表示该函数为一个常量成员函数,在常函数中只能访问数据成员的值,不能修改数据成员的值,也不能调用其它修改数据成员值的方法。
3.修饰对象:
在实例化时,const放在一个普通对象的前面,该对象就变为了一个常对象,常对象在定义时就被声明为只能读取,不能被修改的对象。因此,常对象不能被赋新值,它的值在其生命周期中是不变的。并且常对象只能访问类中的常成员变量和常成员函数,不能调用非常函数。