const 用于指针:
int const* var; //指向常驻量的非常量指针,指针var可变,指针所指向的值*var不可变
int *const var; //指向非常量的常量指针,,指针var不可变,指针所指向的值*var可变
int const *const var; //指向常量的常量指针,指针var不可变,指针所指向的值*var也不可变
const 修饰函数的参数:
1.如果输入参数采用值参数,由于函数将自动产生临时变量用于复制该参数,该输入参数本来就无需保护,所以不必加const修饰
void displlay(vector<int> ivec)
{
//实现代码
}
2.如果输入参数采用指针参数,那么加const 修饰可以防止意外地改动该指针参数,起到保护作用。
void display(const vector<int> *ivec)
{
//实现代码
}
3.如果输入参数采用引用参数,那么加const 修饰可以防止意外地改地该引用参数,起到保护作用.
void display(const vector<int> &ivec)
{
//实现代码
}
const 修饰函数的返回值:
1.如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const修饰没有任何价值。
2.如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,并且该返回值只能被赋给加const修饰的同类型指针。
3.如果给以“引用传递”方式的函数返回值加const修饰,那么该返回值的内容不能被修改。
const修饰成员函数:
const用于修饰类中的成员函数,表示这个成员函数不会改变类的状态(即类的私有数据)。
class ClassName
{
public:
int Fun() const ;
...
};