const 用法

规则:如果关键字const出现在星号左边,表示所指内容是常量。如果出现在星号的右边,表示指针本身是常量(内存的地址不变)。如果出现在星号的两边,表示被指物和指针两者都是常量。

char a[]="hello";
char *p=a;//non-const pointer,non-const data
const char* p=a;//non-const pointer,const data
char* const p=a;//const pointer,non-const data
const char* const p=a;//const pointer,const data

迭代器的作用像个T*指针。声明迭代器为const等价于T* const.表示这个指针的地址时不能变的,但是其内容可以改变。如果希望迭代器所指内容不要变,需要用const_iterator.

std::vector<int> vec;
const std::vector<int>::iterator iter=vec.begin();//T* const
*iter=10;//正确
++iter;//错误
std::vector<int> vec;
std::vector<int>::const_iterator citer=vec.begin();//const T* 
*citer=10;//错误
++citer;//正确

成员函数是const:

bitwise constness:
成员函数只有在不更改对象内任何成员变量(static除外)时才可以说是const.

logical constness:
一个const成员函数可以修改它所处理的对象内的某些成员,但只有在客户端侦测不出的情况下才如此。即使用关键字mutable去释放non-static成员变量的bitwise constness约束。


当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可以避免代码重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值