整理了一下,用了很久的const,才发现const也还是有点重量的。用于C++的const.

时间:2023-01-02 17:57:41

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 ;

...

};