const 表示常类型
 
作用:
1、具有不可变性。
 
2、可以很方便对参数进行调整和修改,和宏定义一样,不变则已,变都变。
 
3、保护被修饰的东西,防止被意外修改。(如:在修饰函数的形参时,加const可以保证参数的值不被改变)
 
4、为函数重载提供参考。
 
5、节省空间,避免不必要的内存分配。(如:宏定义是立即数,会分配多次内存,因此有多个复制;const在内存只有一份复制)
 
6、提高程序效率,编译器通常不为普通的const常量分配内存,而是存在符号表中,就没有存储和读内存的操作。
 
使用场景:(以int为例)
1、修饰一般常量,此时const可以在int前或者int后。
 
2、修饰常数组,此时const可以在int前或者int后。
const int a[] = {1,2};
int const a[ ] = {1,2};
 
3、修饰常对象,此时const可以在class前或者class 后。
 
4、修饰常指针。
const int *a; // 修饰指向的对象,a可以变,a指向的内容不能变
int const *a; // 修饰指向的对象,a可以变,a指向的内容不能变
int *const a; // 修饰a指针,a不可变,a指向的对象可变
const int *const a; // a及其指向的对象都不能变
 
5、修饰常引用。
const int &s;
6、修饰函数的常参数。
void fun(int const a){}
 
7、修饰类的成员函数。
 
8、修饰函数的返回值。
 
 
常引用:
目的:避免在毫不知情的情况下改变了变量的值。
 
引用的初始化:
1、是左值(左值就是可以放在等号左边的值,是一个地址),可以。
2、不是左值,只能对常引用赋值,而且赋值的过程是:将值隐式转换到类型T,放在一个临时变量中,再将这个临时变量来初始化这个常引用。
 
double & dr = 1; // 错,非常引用只能用左值来初始化
const double & dr = 1; // 对,相当于double temp = double(1); const double & dr = temp;
 
因为临时变量是const 类型,第一个表达式相当于将试图将一个const类型转化为非const类型,所以错了。
总之,引用型参数能被定义为const就定义为const。
 
个人博客地址:https://huahua462.github.io/

最新文章

  1. 【java开发】ubuntu常用命令及环境搭建
  2. HTML和XHTML的一点事儿.
  3. Vault插件示例--Vault Explorer与Thin Client的集成。
  4. iOS获取本地沙盒视频封面图片
  5. [activiti] Activiti 5.18 的Mybatis版本依赖问题
  6. C++容器类的简介
  7. 读jQuery官方文档:$(document).ready()与避免冲突
  8. Knots(找规律)
  9. USACO Cow Pedigrees 【Dp】
  10. ignore,neglect,omit,overlook
  11. lucene 查询 (转载)
  12. win10 1803版本unable to start ssh-agent service, error :1058
  13. eclipse 部署项目
  14. Python3学习笔记03-基础数据类型
  15. 【转载】URL编码与两次encodeURI
  16. Java 获取当前项目所在服务器的 IP 地址
  17. ubuntu——caffe配置deeplab
  18. Eclipse Mars-Ant无法使用jre1.6的问题
  19. linux_域名映射
  20. 本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!

热门文章

  1. Dijkstra算法求最短路模板
  2. codeforces 868C - Qualification Rounds(构造)
  3. [洛谷3934]P3934 Nephren Ruq Insania题解
  4. php正则匹配汉字提取其它信息剔除和验证邮箱
  5. Python发送邮件(常见四种邮件内容)
  6. leetcode-mid-array-3 Longest Substring Without Repeating Characters
  7. DAY 3 上午
  8. LinkedBlockingDeque 源码分析
  9. ConcurrentSkipListMap 源码分析
  10. stack() unstack()函数