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

在 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修饰函数参数的时候,声明函数模块内不对参数进行修改。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值