关键字解析——const

2 篇文章 0 订阅
还没来得及提交,电脑死机了 下次有空再写,先列些参考页面在这里。
Understanding the const qualifier
Dealing with Data:The const Qualifier
enum和#define、const
Bjarne Stroustrup's FAQ
Bjarne Stroustrup's C++ Style and Technique FAQ
C#中 const 和 readonly 的区别
Incompatibilities Between ISO C and ISO C++
就先列这么多。
需要注意一下,const可以出现在不同位置:
1、对于基本类型或自定义类型,const可以出现在之前或之后,其意义没有差别:
const   int  a = 10 ;
int   const  a = 10 // 与上一行意义相同

class  A{};
const  A a = A();
const  a = A();  // 与上一行意义相同
2、对于指针类型,const出现的位置将具有不同含义:
int  i = 4 ,j = 20 ,k = 30 ;
const   int *  p1 =& i;  // 表示p1指向一个int常量,不能通过p1来操作修改int的内容
int *   const  p2 =& j;  // 表示p2只能存放j的地址,不能被修改指向别处
int   const   * p3 =& k;  // 与p1含义一致
p1 ++ ;
(
* p1) ++ ;   // invalid,不能修改p1所指向的int值
p2 ++ ;      // invalid,p2不能指向别处
( * p2) ++ ;
p3
++ ;
(
* p3) ++ // invalid
3、使用typedef时,可以消除2中所出现的“不同位置具有不同含义”的情况:
typedef  int   *  int_pointer;
int  i = 4 ,j = 20 ,k = 30 ;
int *   const  p1 =& i;
const  int_pointer p2 =& j;
int_pointer 
const  p3 =& k;
上面所定义的三个指针含义一致,都是表示指向固定地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值