const有以下几个作用:

1. 定义const常量,具有不可变性。eg. const int MAX = 100;  int Array[MAX];

2. 进行类型检查,使编译器对处理内容有更多的了解,消除隐患。eg. void f(const int i){....}编译器就会知道i是一个常量,不允许修改。

3. 避免模糊意义的数字出现,同样何以很方便的进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变都变。

4. 保护被修饰的东西,防止被意外修改,增强了程序的健壮性。

5.为函数重载提供参考

class A
{
void f(int i) {...} //定义一个函数
void f(int i) const {...} //上一个函数的重载
}

6. 节省空间,避免不必要的内存分配

#define PI 3.14159   //该宏用来定义常量
const double Pi=3.14159; //此时并未将Pi放入只读存储器中
double i=Pi; //此时为Pi分配内存,以后不再分配
double I=PI;//编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再次进行宏替换,又一次分配内存

const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出立即数,所以const定义的常量在程序运行过程中只有一份复制品,而#define定义的常量在内存中有若干个复制品。
7. 提高了程序的效率。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与内存的操作,使得它的效率特很高。

引申1:什么情况下需要使用const关键字

1. 修饰一般常量。eg.int const x=2 或 const int x=2。

2. 修饰常数组。eg. int const a[8] = {1,2,3,4,5,6,7,8};  const int a[8]={1,2,3,4,5,6,7,8};

3. 修饰常对象。常对象是指对象常量。eg. class A; const A a; A const a;

  定义常对象时,同样要进行初始化,并且该对象不能再被更新,修饰符const可以放在类名后面,也可以放在类名前面。

4. 修饰常指针

const int *A; //const 修饰指向的对象,A可变,A指向的对象不可变
int const *A; //const 修饰指向的对象,A可变,A指向的对象不可变 int *const A; //const 修饰指针A,A不可变,A指向的对象不可变 const int *const A; //指针A和A指向的对象都不可变

5. 修饰常引用。

const作用的更多相关文章

  1. C++ 中const作用

    一.对const与#define的特点及区别的理解 #define只是用来做文本替换的,#define常量的生命周期止于编译期,它存在于程序的代码段,在实际程序中它只是一个常数,一个命令中的参数,并没 ...

  2. C语言关键字const作用及其应用

    只要学过C语言的,都有知道const这个关键字,知道是用来定义常量的,如果一个变量被const修饰,那么它的值就不能再被改变,那么还有什么其他作用呢? 一.const常用作用 1.修饰局部变量 con ...

  3. const 作用

    转载自:http://www.cnblogs.com/xudong-bupt/p/3509567.html 1.const 修饰成员变量 1 #include<iostream> 2 us ...

  4. C语言中Static和Const关键字的的作用

    程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块 ...

  5. const ;static;extern的使用与作用

     const                                                                /**      const :常量      const  ...

  6. C语言中Static和Const关键字的的作用 -- 转

    static作用:“改变生命周期” 或者 “改变作用域” 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-- ...

  7. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  8. C++中const的全面总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...

  9. 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)

    李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...

随机推荐

  1. Java版斯诺克开源分享

    Java版斯诺克开源分享 这个小程序是我平时无聊写着玩的,在网盘里躺了好久了,今天就把它拿出来跟大家分享一下,下面是游戏截图: 请不要吐槽这个界面,斯诺克的球台是我从qq游戏里面截取的... 下面是源 ...

  2. Selenium Firefox 官方Webdriver -- Geckodriver 下载地址

    Selenium Firefox 官方Webdriver -- Geckodriver 下载地址 https://github.com/mozilla/geckodriver/releases

  3. 用express创建网站出现"$ DEBUG=microbog ./bin/www"的提示

    第一次用express框架创建网站,指令为:“express -t ejs microblog”,如下图 指令运行完成后,出现如图框中的提示,不知道什么意思,运行:“node app.js”来启动服务 ...

  4. Fiddler 抓包工具使用详解

    博客园 首页 新随笔 联系 订阅 管理 随笔 - 20  文章 - 0  评论 - 64 Fiddler 抓包工具总结 阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statis ...

  5. OC处理.Net Json时间格式

    通过服务器收到的json时间格式是/Date(xxxxxxxxxxxxx+xxxx)/,其中前半部分是自1970年的millionSecs,后半部是时区,我们需要对齐进行转换. 解决方式有两种,第一种 ...

  6. https://www.cnblogs.com/yuanchenqi/articles/6755717.html

    知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一个场景:浏览器,网易云音 ...

  7. XPath 快速入门

    XPath 是一门在 xml 文档中查找信息的语言. XPath 使用路径表达式来选取 xml 文档中的节点或者节点集合. 路径表达式由元素和属性组成. 语法介绍 // 示例: // xml 文档 & ...

  8. 转!!SpringMVC与Struts2区别与比较总结

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  9. 10.Query an Array-官方文档摘录

    1.插入 db.inventory.insertMany([ { item: "journal", qty: 25, tags: ["blank", " ...

  10. rest_framework 认证与权限

    一  认证 1.1先写个类(认证组件) from app01 import models from rest_framework import exceptions from rest_framewo ...