浅谈const限定符——c++

一、const 定义符号常量
在学习c语言的时候,我们使用#define来定义符号常量。而在c艹中提供了一种更好的处理符号常量的方法。就是使用const关键字来修改变量的声明和初始化。
通过宏定义常量的方法为

#define LENGTH 1000

再看看使用const的创建常量的通常格式:

const type name = value;

使用const的优点:
①const可以定义数据类型,而宏无法明确的定义数据类型(虽然可以使用L或UL指明数据长度),但是在编译过程中难以对其进行检查,使用define更加危险。
②现在一些c艹的调试工具可以对const进行调试,而无法对define进行调试,建议使用const和inline去替代宏的作用。

二、const与指针
const和指针搅在一起咋看上去总觉得乱糟糟的,其实我们只需要记住一句话就好:

若const在星号的前面,修饰的是常量;若const在星号的后面,修饰的是指针!

比如

int b;
const int * a=&b;
int const * c=&b;

定义的是一个指向int常量的指针,也就是说你能指向别的地方,但无法改变所指向的数据的内容。

int * const d=&b;

这是定义一个指向int变量的常量指针,你能改变数据的内容,但是不能移动指针的指向。

const int * const e=&b;

像这样的傻子就是指向常量的常量指针啦╮(╯▽╰)╭

三、const与成员函数

如果有人问你const的作用是什么,千万不要仅仅回答用于定义变量,可以回答用于使所修饰的内容不可改变,提高高程序的健壮性。
比如,(假设A是一个类,func()为其一个成员函数)

const A func(A const & other) const;

第一个const修饰函数返回值,返回一个A类的常量;
第二个const修饰参数对象的引用,保证作为参数的类不会被改变;
第三个const修饰对象本身,使得对象本身不会被改变。

有个比较奇葩的特例,若是const在成员函数中,变量用mutable修饰的话,还是可以修改类的成员变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值