在C/C++开发中经常会用到const,这个修饰符。今天就讨论一下它的作用。

(1) const用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查。这个是开发中经常用到的const的最基本的作用。

(2) const修饰函数形式参数:当输入参数为用户自定义类型和抽象数据类型的时候(就是自己定义的类),应该将“值传递”改为“const &传递”,可以提高效率。

比较下面两段代码:

void fun(A a);

void fun(A const &a);

第一个函数效率低。函数体内产生A类型的临时对象用于复制参数a,临时对象的构造、复制、析构过程都将消耗时间。而第二个函数提高了效率。用“引用传递”不需要产生临时对象,节省了临时对象的构造、复制、析构过程消耗的时间。但光用引用有可能改变a,所以加上const。

(3) const 修饰函数的返回值:如给“指针传递”的函数返回值加const,则返回值不能被直接修改,且该返回值只能被赋值给加const修饰的同类型指针。例如:

const char *GetChar(void){};

char *ch = GetChar(); //错误

const char *ch = GetChar(); //正确

(4)const修饰类的成员函数和(函数定义体):任何不会修改数据成员的函数都应用const修饰,这样,当不小心修改了数据成员或调用了非const成员函数时,编译器都会报错。

const修饰类的成员函数形式为:

int GetCount(void) const;

C++中const的作用(至少要说出3个)相关推荐

  1. c++中const的作用

    const关键字的作用 (1)作用: 1)欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了: 2)对指针而言,可以指定指针本身为const,也可以指 ...

  2. C/C++中Static和Const的作用

    C/C++中Static和Const的作用     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/53118850 一.c ...

  3. const 的作用?

    我只要一听到被面试者说:"const意味着常数"(不是常数,可以是变量,只是你不能修改它),我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完全概括了cons ...

  4. Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用

    文章目录 亚硝酸盐氧化细菌在黑暗海洋中的主要作用 写在前面 摘要 热心肠日报 背景 结果 图1 非全长16S rRNA基因序列的系统发育树 图2 通过募集宏基因组片段的方法确定亚硝酸盐氧化细菌单扩增基 ...

  5. C++ 中const的用法,特别是用在函数前面与后面的区别!

    原文链接:https://www.cnblogs.com/doker/p/11051175.html 目录 第一:const修饰函数的参数 第二:用const修饰函数的返回值 第三:const 成员函 ...

  6. 在比特币世界中矿工的作用是什么

    转载自   在比特币世界中矿工的作用是什么 如题.本人技术小白,花了大量时间查阅了比特币的一些资料.虽然不敢说把每个细节都完全搞懂了,不过整体思路和关键部分的主要原理还是搞明白了. 要说矿工的作用就要 ...

  7. C#中const和readonly有什么区别?

    C#中const和readonly什么区别? 您什么时候可以使用另一个? #1楼 常量成员是在编译时定义的,不能在运行时更改. 使用const关键字将const声明为字段,并且必须在声明const对其 ...

  8. 社群运营中KOL的作用

    KOL定义:关键意见领袖(Key Opinion Leader,简称KOL)是营销学上的概念.通常被定义为拥有更多.更准确的产品信息,且为相关群体所接受或信任,并对该群体的购买行为有较大影响力的人. ...

  9. const的作用和用法

    一.const的作用 1.关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了 告诉了用户这个参数的应用目的.可以避免无意中由于修改数据造成的编程错误. 2.使 ...

最新文章

  1. 攻防世界(Pwn) forgot---栈溢出;(方法二)
  2. 怎么找出电脑里隐藏的流氓软件_9成人都不知道的秘密!那些隐藏在你电脑里的“大象”!...
  3. 中国农用喷洒机行业市场供需与战略研究报告
  4. Python的几种实现
  5. 在线SQL美化格式化工具
  6. mysql获取上周时间戳_php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)...
  7. Java 2.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型摄氏温度,然后将其转换为华氏温度,并显示结果。
  8. 忘记了mysql的root密码(分享:重置密码过程)
  9. 漫反射(diffuse reflection)
  10. 我与我的专业计算机作文500字,我和学校作文500字(精选5篇)
  11. 秋天,小溪潺潺,古老的树上黄叶灿灿,阳光像一个魔法师,在树叶间流动,远山,云天,充满秋阳的光线。以此景观做一首诗...
  12. vue——评论的展开全文和收起
  13. 哈!他们的“自我修养” 穆穆-movno1
  14. 蓝桥杯 回文日期(Java)
  15. 使用Visual Studio 2019创建安装程序的详细教程
  16. 华为hcie认证工程师里一定要知道的Radius 基本介绍
  17. 深度学习_深度学习基础知识_TTA(测试时增强)
  18. 批量打印电子发票方法,发票连续打印教程分享
  19. java语言基础知识(完整版)
  20. 自制力对人生的实际价值探索

热门文章

  1. 前端程序员后来都去干嘛了?我找了几位聊了聊
  2. 面试积累(java配置环境变量)
  3. Bellman算法和SPFA算法
  4. 企业员工电脑屏幕监控软件有免费版吗
  5. java action result_Struts2 Result 返回JSON对象详解
  6. 51单片机进阶案例(1)——基于MATLAB GUI的单片机串口与PC的通信实现实时时钟和双向可调时钟功能(利用DS1302时钟芯片和LCD1602液晶屏)
  7. HTML5一段空白怎么打,空白空格怎么打?
  8. 利用SQL语句在SQLite数据库中实现命令执行
  9. 【原】Oracle 11.2.0.1 64bit for RHEL6.0 Server x86_64 静默安装
  10. android 电池(一):锂电池基本原理篇