C++中const的使用

1. const string* p和String * constp

助记方法:* 读成 pointer to ,倒着读

const string* p
const 在 * 左边,说明定义的是指向string常量的指针,p指针可以改变,但是原来指向的string不能变
倒着读:p a const pointer to string
string const * p; //因为没有const*,所以const 跟随前面的string

 

String * const p
const 在 *右边,说明定义的是常指针,常指针指向一个string,就是说p不允许再指向别处,p不能变,但是string可以变
倒着读:p is a pointer to const string

 

比如:
char * const p;
p++ 不可以,因为你改变了P

const char *p;
p++ //可以


2.const作为函数形参
如果有修改参数值的必要,就用一般引用, 表示 "我这个函数有可能会修改你传递过来的参数",采用引用避免的复制实参拷贝的消耗;
如果仅仅读取参数值, 那么就用const引用, 表示"我这个函数绝对不会修改你传递过来的参数",这样的好处是const实参或者非const形参都可以调用该函数;
特别是注意:"hello world" 是constchar*类型,不能作为char*的实参,对于变量的约束,允许加强,当绝对不能削弱

 

3.const和非const之间的转换
const_cast(expression)
常量指针被转化成非常量指针,并且仍然指向原来的对象;
常量引用被转换成非常量引用,并且仍然指向原来的对象;
另外还可以用定义一个另外的变量实现copy转换。

类似的cast函数:
static_cast (expression)
该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性
reinterpret_cast (expression)
dynamic_cast (expression)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值