一直不理解C++中的const的写法的区别, 和应该如何记忆, 如

int* const a;  //a作为指针本身为常量, 不允许改变指向, 定义时需要被赋值
int const* a;  //a指向内容为常量
const int* a;  //a指向内容为常量

如此繁琐, 该如何记忆? 又该习惯于何种写法?

  <<C++ Templates>>第一章轻描淡写地提出: "恒定不变的部分"指的是const限定符前面的部分".
并推荐采用 int const *a 的写法, 而非 const int *a的写法.

  经过反复思考, 应这样理解:

指针解释:

int* const a;  //const 修饰 int* , 即 a (指针)本身恒定
int const* a;  //const 修饰 int , 即 *a (指向的内容) 恒定

   而第三种写法 const前面没有任何东西, 虽然是正确的, 但不符合这种规则, 故不推荐使用.

引用解释:

  基于这样的规则, 考虑如下代码:

void foo (int const& a)
void foo (const int& a)

  对于以上代码都是正确的, 但第二种不符合规则, 故不推荐使用.

方法解释:

class A{...};
int A::top() const;    // const修饰 top() , 常量方法, 不允许该方法修改成员变量

其他推荐:

  书中同样指出: "对于间隔符, 我们决定在& 符合和参数名至今留出一个空格"

void foo (int const& x)

  借助这种方法, 我们同样强调: 参数类型和参数名称是分离的.

  故推荐如下写法:

int* a;

  而非

int *a;

转载于:https://www.cnblogs.com/hauter/p/3776709.html

[ C++ ] 理解const相关推荐

  1. 深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const

    原文网址:http://www.cnblogs.com/rushuizhijing/archive/2011/08/26/2154737.html 深入理解const char*p,char cons ...

  2. C语言高级编程:深入理解const

    const修饰的变量,其实质是告诉程序员或编译器该变量为只读,如果程序员在程序中显示的修改一个只读变量,编译器会毫不留情的给出一个error. 而对于像数组溢出,隐式修改等程序不规范书写造成的运行过程 ...

  3. 如何理解const char*, char const*, char*const等

    const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目. 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混. Bjarne在他的T ...

  4. 简单理解const是锁还是不锁!

    问题由来 某天自我感觉良好的我,在QQ群发现大佬们的聊天东西,看了一下没怎么在意,仔细一看这都是什么啊一大坨,关键是我还不会,岂可休,就有了这篇文章! // 这是是大佬发的东西.// 这些const到 ...

  5. 十分钟深入理解const用法(趣味故事)

    文章目录 1.c标准 2.const的用法 3.修饰变量 4.修饰指针

  6. const char* p 、char* const p、const (char*) p 理解记忆

    网上查找了很多理解记忆的方式,总结几个对自己理解很有帮助的原则: 1:从右至左理解(应该和c++的语言特性有关) 2:const修饰最近的一个单词,'*'除外.(还有一种理解const在'*'左,修饰 ...

  7. C++——const加深理解之const在函数后

    先看下面4种情况,应该是理解const的基础,我觉得必须掌握且容易掌握 int b = 500; const int* a = &b; [1] int const *a = &b; [ ...

  8. const的理解、const指针、指向const的指针

    1.const 的理解 const 是C语言的一个关键字,需要注意的是,const 关键字是把变量变为一个只读的变量(也就是不可以作为左值),绝对不是将这个变量变为常量.也就是说经过const 修饰的 ...

  9. C++中const的理解

    文章目录 const关键字概述 const的作用规律 常变量的默认作用域 const对象和对象的const成员 const修饰函数的参数和函数的返回值 常见的对const的错误理解 const关键字概 ...

最新文章

  1. ASP.NET中如何实现负载均衡
  2. CentOS7 通过 YUM 升级 VIM8
  3. django 模板里面for循环常用的方法
  4. 第二章 MCS-51单片机硬件结构与工作原理
  5. appium 驱动 对应9.0 系统_以后做Appium自动化测试,再也不会踩这些坑了!
  6. 最近发现了一条新的“致富”路
  7. 开发一个iOS应用没有那么容易
  8. Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)
  9. File Finder pro Mac版重复文件查找器使用方法
  10. SAStruts アクションにJSONを返すメソッドを作成してみる
  11. docker 监控容器的cpu、内存、网络、io情况
  12. 计算平均成绩,科目数未知
  13. IP一键替换[非原创]
  14. webpower携手穷游,解析大数据、营销智能化与用户的关系
  15. 【C语言】动态内存开辟的使用『malloc』
  16. 打印菱形图案c语言pta,C语言的考试题型
  17. 五-2、vue中引用文件路径问题
  18. word中的回车符去除
  19. CMY/CMYK 打印机色彩
  20. OAuth2第三方登录快速接入

热门文章

  1. 精心挑选12款优秀的 JavaScript 日历和时间选择插件
  2. php sapi linux,PHP内核 - SAPI - Cli
  3. pyqt5实战之透明样式和页面切换和弹出新窗口
  4. 黑客这样使用python发邮件
  5. React App项目页面进出场动画
  6. 华为云发布全新DevOps实践,大幅提升交付效率
  7. Android零基础入门第77节:Activity任务栈和启动模式
  8. 《响应式Web图形设计》一13.2 缩放图像带来的问题
  9. 【数据架构解读】基于阿里云数加StreamCompute和MaxCompute构建的访问日志统计分析...
  10. Btrace入门到熟练小工完全指南