顶层const和底层const

转载请注明出处!!

C++ primer》 (第五版)P57关于顶层const和底层const有部分介绍。

原版中是这样描述的:

2.4.3.Top-Level const

  As we’ve seen, a pointer is an object that can point to a different object. As a result,we can talk independently about whether a pointer is const and whether the objects to which it can point are const. We use the term top-level const to indicate that the pointer itself is a const. When a pointer can point to a const object, we refer to that const as a low-level const.

知乎上有人给出了很好的解释:

查看原文

1. const type FOO;           //常量


2. class Bar{
void foo_bar() const; 
};

const member function: 不允许改变member variable.

上述情况应该区别:

const   type   fun2(   );   

const   type*   fun3(   ); 

const在函数修饰函数的返回值,是对函数值的限定和修饰。


3. const type * ptr;          //指针所指向的variable不可改变---底层const


4. type * const ptr;          //pointer的值不可改变---顶层const


5. pass value by const reference: void foo (const &bar);  //function 不可改变bar的值。


使用const的建议:(转)

  1、要大胆的使用const,这将给你带来无尽的益处,但前提是你必须搞清楚原委;   
  2、要避免最一般的赋值操作错误,如将const变量赋值;   
  3、在参数中使用const应该使用引用或指针,而不是一般的对象实例,原因同上;   
  4、const在成员函数中的用法要很好的使用;   
  5、不要轻易的将函数的返回值类型定为const;   
  6、除了重载操作符外一般不要将返回值类型定为对某个对象的const引用;  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

空空的司马

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值