c++primer笔记const限定词作用在指针和引用以及作为函数的形参

const限定词:
顶层const:直接作用在对象上,使得对象是一个常量。
底层const:对于复合类型,例如指针。一个指针是常量指针还是一个指向常量的指针,有区别。例如const int *p 底层const,表明p指向一个常量,不可以通过p来改变p指向的对象的值。int const *p 顶层const, 表明是一个常量指针,初始化后就不能变了。永远指向那个地址。(因为此时对象就是指针了,所以表明指针的就是顶层,表明指针所指的就是底层。)
常量引用:不可以通过常量引用来修改绑定的值,但是初始化可以用非常量来初始化。这个对于作为函数形参的时候就很重要了。当常量的引用作为函数形参,由于顶层const,实参初始化形参忽略掉顶层const, 所以传入的可以是常量或者非常量。典型书本函数

string::size_type find_char(const string &s,  const char &c, string::size_type &occures) {
	auto ret = s.size();
	occures = 0;
	for(decltype(ret) i = 0; i != s.size(); ++i) {
		if(s[i] == c) {
			if(ret == s.size())
				ret = i;
			++occures;
		}
	}
	return ret;
}

这样可以接受形如find_char("hello wordl, ‘c’, ret),这样的参数
如果代码修改成

string::size_type find_char(string &s,  const char &c, string::size_type &occures) {
	auto ret = s.size();
	occures = 0;
	for(decltype(ret) i = 0; i != s.size(); ++i) {
		if(s[i] == c) {
			if(ret == s.size())
				ret = i;
			++occures;
		}
	}
	return ret;
}

find_char("hello wordl, ‘c’, ret),是错误的,s只能接受一个对象,不能接受一个常量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Greatljc

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值