C++ const的学习

const与#define的比较:

  1. const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。对后者只进行字符替换,没有类型安全检查,发生在预处理时期。同时对字符替换时可能发生意料不到的错误。
  2. 有些调式工具可以对const常量进行调试,却不能对宏常量进行调试。

用const修饰函数的参数,只能修饰输入参数

  1. 如果输入参数采用指针传递,加const可以防止意外的改动指针,起到保护作用。
  2. 如果输入参数采用值传递,由于函数将自动产生临时变量用于复制该参数,所以加const没有意义。
  3. 对于非内部数据类型的参数,如果不期望会改变参数本身,可以通过加const并以引用方式传递。

用const修饰函数的返回值

  1. 如果给以指针传递的方式的函数返回值加上const,表示该指针的内容不能更改。并只能被赋给const修饰的同类型指针。
  2. 如果函数以值传递的方式,那么加const没有任何意义,
  3. 函数返回值采用引用传递的场合并不多,一般值出现在类的赋值函数中,目地是为了实现链式操作

const成员函数:任何不会修改数据成员的函数都应该声明为const。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值