const作用
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作用的更多相关文章
- C++ 中const作用
一.对const与#define的特点及区别的理解 #define只是用来做文本替换的,#define常量的生命周期止于编译期,它存在于程序的代码段,在实际程序中它只是一个常数,一个命令中的参数,并没 ...
- C语言关键字const作用及其应用
只要学过C语言的,都有知道const这个关键字,知道是用来定义常量的,如果一个变量被const修饰,那么它的值就不能再被改变,那么还有什么其他作用呢? 一.const常用作用 1.修饰局部变量 con ...
- const 作用
转载自:http://www.cnblogs.com/xudong-bupt/p/3509567.html 1.const 修饰成员变量 1 #include<iostream> 2 us ...
- C语言中Static和Const关键字的的作用
程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块 ...
- const ;static;extern的使用与作用
const /** const :常量 const ...
- C语言中Static和Const关键字的的作用 -- 转
static作用:“改变生命周期” 或者 “改变作用域” 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-- ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- C++中const的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...
- 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)
李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...
随机推荐
- xmpp muc 群聊协议 2
Roles and Affiliations There are two dimensions along which we can measure a user's connection with ...
- 淘宝订单数据转CSV
<html> <body> <div id="result"> </div> <div> <textarea st ...
- 如何查看python的api
如何查看python selenium的api 经常发现很多同学装好了python+selenium webdriver开发环境后不知道怎么去查看api文档,在这里乙醇简单介绍一下具体方法,其实非 ...
- 错误0x80070522:客户端没有所需的特权
win10或win7 C盘复制文件等遇到"错误0x80070522:客户端没有所需的特权" 在运行中输入 icacls c:\ /setintegritylevel M
- Numpy常用操作方法
NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准数学函数(无需编 ...
- 解决python中write()函数向文件中写中文时出现乱码的问题
今天看<python编程从入门到实践>的第10章文件.异常,在做练习的时候,向文件中写内容,但是写中文就不行,后来在百度上查了众多资料,解决方法如下: 解决:在open()函数中添加一个e ...
- (4.6)sql2008中的group by grouping sets
最近遇到一个情况,需要在内网系统中出一个统计报表.需要根据不同条件使用多个group by语句.需要将所有聚合的数据进行UNION操作来完成不同维度的统计查看. 直到发现在SQL SERVER 200 ...
- python 多进程使用Queue通信的例子
import time from multiprocessing import Process,Queue MSG_QUEUE = Queue(5) def startA(msgQueue): whi ...
- windows如何安装mysql
参考一下网址,已测试可用 https://www.cnblogs.com/reyinever/p/8551977.html
- Eclipse ftp插件
一个比较好的插件:esftp 下载地址http://sourceforge.net/projects/esftp/ 解压后放到plugins目录下重启即可. 配置estfp, 右击项目crm-> ...