C++中const的作用(至少要说出3个)
在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个)相关推荐
- c++中const的作用
const关键字的作用 (1)作用: 1)欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了: 2)对指针而言,可以指定指针本身为const,也可以指 ...
- C/C++中Static和Const的作用
C/C++中Static和Const的作用 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/53118850 一.c ...
- const 的作用?
我只要一听到被面试者说:"const意味着常数"(不是常数,可以是变量,只是你不能修改它),我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完全概括了cons ...
- Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用
文章目录 亚硝酸盐氧化细菌在黑暗海洋中的主要作用 写在前面 摘要 热心肠日报 背景 结果 图1 非全长16S rRNA基因序列的系统发育树 图2 通过募集宏基因组片段的方法确定亚硝酸盐氧化细菌单扩增基 ...
- C++ 中const的用法,特别是用在函数前面与后面的区别!
原文链接:https://www.cnblogs.com/doker/p/11051175.html 目录 第一:const修饰函数的参数 第二:用const修饰函数的返回值 第三:const 成员函 ...
- 在比特币世界中矿工的作用是什么
转载自 在比特币世界中矿工的作用是什么 如题.本人技术小白,花了大量时间查阅了比特币的一些资料.虽然不敢说把每个细节都完全搞懂了,不过整体思路和关键部分的主要原理还是搞明白了. 要说矿工的作用就要 ...
- C#中const和readonly有什么区别?
C#中const和readonly什么区别? 您什么时候可以使用另一个? #1楼 常量成员是在编译时定义的,不能在运行时更改. 使用const关键字将const声明为字段,并且必须在声明const对其 ...
- 社群运营中KOL的作用
KOL定义:关键意见领袖(Key Opinion Leader,简称KOL)是营销学上的概念.通常被定义为拥有更多.更准确的产品信息,且为相关群体所接受或信任,并对该群体的购买行为有较大影响力的人. ...
- const的作用和用法
一.const的作用 1.关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了 告诉了用户这个参数的应用目的.可以避免无意中由于修改数据造成的编程错误. 2.使 ...
最新文章
- 攻防世界(Pwn) forgot---栈溢出;(方法二)
- 怎么找出电脑里隐藏的流氓软件_9成人都不知道的秘密!那些隐藏在你电脑里的“大象”!...
- 中国农用喷洒机行业市场供需与战略研究报告
- Python的几种实现
- 在线SQL美化格式化工具
- mysql获取上周时间戳_php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)...
- Java 2.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型摄氏温度,然后将其转换为华氏温度,并显示结果。
- 忘记了mysql的root密码(分享:重置密码过程)
- 漫反射(diffuse reflection)
- 我与我的专业计算机作文500字,我和学校作文500字(精选5篇)
- 秋天,小溪潺潺,古老的树上黄叶灿灿,阳光像一个魔法师,在树叶间流动,远山,云天,充满秋阳的光线。以此景观做一首诗...
- vue——评论的展开全文和收起
- 哈!他们的“自我修养” 穆穆-movno1
- 蓝桥杯 回文日期(Java)
- 使用Visual Studio 2019创建安装程序的详细教程
- 华为hcie认证工程师里一定要知道的Radius 基本介绍
- 深度学习_深度学习基础知识_TTA(测试时增强)
- 批量打印电子发票方法,发票连续打印教程分享
- java语言基础知识(完整版)
- 自制力对人生的实际价值探索
热门文章
- 前端程序员后来都去干嘛了?我找了几位聊了聊
- 面试积累(java配置环境变量)
- Bellman算法和SPFA算法
- 企业员工电脑屏幕监控软件有免费版吗
- java action result_Struts2 Result 返回JSON对象详解
- 51单片机进阶案例(1)——基于MATLAB GUI的单片机串口与PC的通信实现实时时钟和双向可调时钟功能(利用DS1302时钟芯片和LCD1602液晶屏)
- HTML5一段空白怎么打,空白空格怎么打?
- 利用SQL语句在SQLite数据库中实现命令执行
- 【原】Oracle 11.2.0.1 64bit for RHEL6.0 Server x86_64 静默安装
- android 电池(一):锂电池基本原理篇