[c++]const使用

参考effective c++

1. 与指针配合

char * str="Hello";

const char * p = str;//指向常量的指针
p[0]='h';  //wrong
p="Hi"; //Ok

char const * pp=str;//同上  只关心const相对于 * 位置

char * const cp=str;//指针常量 不允许指向其他的地址
cp[0]='h';  //Ok  此处运行有错误 "Hello"编译时 常量 赋值出错
cp="Hi"; //wrong

const char * const pp=str;

2. 修饰函数参数或返回值

class Widget;

const Widget operator=(const Widget& lhs,const Widget& rhs);//防止 if((a*b)=c)这样的暴行
//=  *= += -=等符合运算符都需要返回const

3. 类中修饰函数  const函数

//提供const函数的原因
//1. 供const对象调用
//2. 使接口更容易被理解 接口是否可以改变对象

class MyString
{
	private:
	char* str;

	const char& operator[](unsigned int i) const
	{
		return str[i];
	}

	char& operator[](unsigned int i)
	{
		return const_cast<char&>(static_cast<const Mystring&>(*this)[i]);//避免代码重复
	}
}



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值