C++常见面试题(六)——const

    技术2022-07-17  78

    在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。

    修饰变量的时候

         修饰内置的类型变量: 此时不能通过变量名改变变量的值,变量是只读的,这就是我们平时说的常量。但是需要注意下面的情况:

        在调试到第8行时,显示a的值是20,但是输出的确实10。所以千万不要轻易对 const 变量设法赋值,这会产生意想不到的行为。编译器然后认为 a 的值为一开始定义的 10,我们可以理解为编译器屏蔽了我们通过其他方法对a进行的修改,如果想要编译器不屏蔽这种修改,只需要在const前面加上关键字volatile(可变的),输出结果就会变成20。

        修饰指针变量: 1)const 类型* ptr,这时ptr所指的存储单元的内容是不能通过ptr改变(不能阻碍通过其他指向a的指针改变)。

                                  2)类型 * const ptr,这时ptr所指向的单元不能改变,但是可以通过ptr修改单元内的值。

                                  3)const 类型 * const ptr,这时ptr所指的存储单元的内容是不能通过ptr改变且ptr所指向的单元不能改变,但是可以通过ptr修改单元内的值。

        特别注意的是,修饰内置的类型变量时,声明的时候就需要赋值,而修饰指针变量的时候,声明可以和复制分开。

    修饰成员函数

        这时候const写在成员函数的后面,作用是声明这个成员函数不会对对象进行更改。

    返回值和函数参数

        const修饰返回值的时候,声明程序不能对得到的返回值进行修改。

        const修饰函数参数的时候,声明函数模块内不对参数进行修改。

        注意,最后这个写的比较简单,但是理解了上面这里是很容易理解的。

    Processed: 0.028, SQL: 10