《C++ primer》学习笔记之十一:const的放置位置

  const double d = 9.1;
  double const d2 = 9.2;   //const放double后或double前效果一样
  double d3 const = 9.3;   //error.不能放在变量名后。const修饰函数名时可以放在函数名后。
  
  const double *dp = &d;   //dp为一个指针,指向一个const double。 赋值(*dp)=9.2;将导致错误
  double const * dp2 = &d;  //const放double后或double前效果一样
  const double * const dp3 = &d;  //dp为一个const指针,指向一个const double。
  const double const * const dp4 = &d; //导致warning(重复的修饰),这句话等同于:const const double * const dp4 = &d;
 
 const double d = 9.1;这句比double const d2 = 9.2;常见。不过后者我认为更确切,看下面:
  typedef char *cstring;
  char *cstr = "ab";
  const cstring cstr = "cd"; //这一句相当于下面的哪一句?
  const char *cstr2;
  char *const cstr3;   //与这句效果相同
 语句const cstring cstr = "cd"; 与char *const cstr3;等效,而不是与const char *cstr2;等效。
 原因:const cstring cstr = "cd"; 与cstring const cstr3;等效。
 所以将const置于修饰的类型的后面比放在类型的前面好,比如:
  double const d2 = 9.2; //not: const double d = 9.1;
  double const *dp = &d; //not: const double *d =&d;
  double const * const dp31 = &d;  //not: const double * const dp3 = &d;
 将double叫double变量,叫double const叫double不变量。这就不绕口了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值