关于 C++中 Top-level Const 和 Low-level Const 的思考

学习C++ Primer时在Reference和Pointer上花了很大功夫,尤其是关于 Top-level Const 和 Low-level Pointer 的概念容易搞不清,下面列举了一些区别:

Top-level Const Low-level Const
自己是 const, 比如 point to 或 bind to 的对象不能变 point to 或 bind to 的是const
e.g. int *const a = &b; e.g. const int *a = &b;
对Pointer:不允许*p = a; 对Pointer:不允许p = &a;
拷贝不受限制 拷贝对象必须具有相同的Low-level Const 资格

Tip:constexpr也属于top-level const!

在C++ Primer(English Version Page64)有:

In general, we can convert a nonconst to (low-level) const but not the other way round.

也就是在Low-level Const 的拷贝中:
Plain(nonconst)→Low-level Const : ok
Low-level Const→Plain(nonconst) : error

对于拷贝赋值中,要着重理解,不然我搞了半天差点疯掉。明白const的针对和必要性,因为纷繁复杂的规则背后必有原理。
例如,在Exercise 2.33中就要明白原理再看d,e,g的情况(虽然主要在研究auto)。

#include <iostream>
using namespace std;

int main()
{
   
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值