C++_const_浅析

简单理解const

我们经常使用到const,简单来说,const就是不允许改变的意思。

C语言中的const:
它限定一个变量不允许被改变,产生静态作用。
C++中的const:
const 限定符,它把一个对象转换成一个常量。

const的作用

1)欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了;

2)对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;

3)在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值;

4)对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量

5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为 “左值”

const的不同

修饰变量

  • 变量的值不能改变

注:此时有两种写法是等价的:
1、const int a = 10;
2、int const a = 10

简单示例:
在这里插入图片描述
可以看到这里,我们试图改变a和b的时候,下方出现了错误提示:
在这里插入图片描述

修饰指针

  • 如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量
  • 如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量

简单示例:
在这里插入图片描述

函数使用

  • const 修饰函数参数
    • void function(const int Var)
  • 传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)

    • void function(const char* Var)
  • 参数指针所指内容为常量不可变

    • void function(char* const Var)
  • 参数指针本身为常量不可变(也无意义,因为char* Var也是形参)

    • void function(const class& Var)
  • //引用参数在函数内不可以改变

    • void function(const TYPE& Var)
  • //引用参数在函数内为常量不可变

  • const 修饰函数返回值
    • const int fun1()
  • 这个其实无意义,因为参数返回本身就是赋值。

    • const int* fun2()
  • 我们可以把fun2()看作成一个变量,即指针内容不可变。

    • int* const fun3()
  • 我们可以把fun2()看作成一个变量,即指针本身不可变。

类中使用

关于类中的使用,分为两点:
1、const 修饰成员变量
在这里插入图片描述

2、const 修饰成员函数
在这里插入图片描述

注意:在成员函数后加const,其实是限定了this指针;
所以,const 不能 和 static 关键字同时使用,因为static关键字修饰静态成员函数,静态成员函数不含有this指针。

记忆小技巧

Bjarne 在他的《The C++ Programming Language》里面给出过一个助记的方法——“以 * 分界,把一个声明从右向左读”。
注意语法,* 读作 pointer to (指向…的指针),const (常量) 是形容词,char (变量类型) 和 p (变量名) 当然都是名词。

1) const char * p
读作:p is a pointer to a const char
译:p 是一个指针(变量),它指向一个常量字符(const char)。
2) char * const p
读作:p is a const pointer to a char
译:p 是一个常量指针(const p),它指向一个字符(变量)。

参考资料

【1】scut_yp.c++中const的作用.CSDN.2019.04.04
【2】Eric_Jo.关于C++ const 的全面总结.CSDN.2009.04.30
【3】JPEXE.记住const的位置与区别.CSDN.2008.03.07
【4】C++中const(百度百科)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值