Const 关键字详解
const 标识符 在c++中作为常量修饰符 用来修饰 函数 变量 指针
const 修饰的变量不可以改变值
const 在修饰指针的时候
const 标识符出现在*的左边表示 指向的变量为常量不能通过指针去改变该对象的值 叫做常量指针
即
const int a = 0;
const int* iptr = &a;
指针iptr可以改变但是不能对a的值进行改变
即
const int b =2;
iptr =&b;
可以运行通过但是
*iptr = 3;
该操作不允许执行;
注意:const* point 可以指向非const修饰的变量,但是任然不可以修改变量的值 而且 不可以赋值给 非常量指针
const 标识符 出现在指针的右边表示该指针为常量不可修改和重新赋值以及进行其他相关操作指针常量
即
int a = 0;
int * const ptr = &a 。
指针常量prt 不可以修改其值但可以修改其指向内容的值。
在const 修饰类成员变量的声明之后要在类的初始化列表里初始化 ,但是在const声明的变量是编译器内置类型时,可以在声明时初始化
而且在编译时期是不会分配内存空间去存储内置变量的。而是直接进行替换但是只针对内置类型 其他用户自定义类型不支持。
const在修饰函数的时候分为两种情况
一个是在返回值上为const 即
const int func () { }
类型这种是指不能修改返回值使用较少一般用于进行操作符。
另外一种是在函数声明后添加但函数只能是类的成员函数才行全局函数不允许 即
int func()const { }
指的是在函数而里面不能对类的成员变量进行修改和重新赋值,但操作函数可以修改和赋值非类成员变量。
在const 修饰对象时 修饰的对象只能调用类的常函数不能调用非常函数。
注意在类的常函数中 this指针即为指针常量也为常量指针 即
const T *const this
不能修改this指针指向的变量成员和修改this指针的指向
在mutable标识符声明的变量可以在常函数中改变值进行赋值操作
const_cast 可以解除const限制
在const修饰的全局变量分配内存在静态存储区
Const 关键字详解的更多相关文章
- const关键字详解
const在函数前与函数后的区别 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; ...
- (转) C/C++中const关键字详解
文章转自 http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 为什么使用const?采用符号常量写出的代码更容易维 ...
- C++中const关键字详解
1.什么是const? const意味着是常量类型,被const修饰的变量或对象是不能被修改和更新的,当然在某些情况下,我们可以偷梁换柱的改变它. 2.为什么要引入const? 最初的目的是为了取代预 ...
- 【转载】C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
- C++初学者 const使用详解
关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,参考了康建东兄的const使用详解一文,对其中进行了一些补充,写下了本文. 1. const常量 如: cons ...
- Java面试题04-final关键字详解
Java面试题04-final关键字详解 本篇博客将会讨论java中final关键字的含义,以及final用在什么地方,感觉看书总会有一些模糊,而且解释的不是很清楚,在此做个总结,以备准备面试的时候查 ...
- Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.
在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...
- Delphi、Lazarus保留字、关键字详解
Delphi.Lazarus保留字.关键字详解 来自橙子,万一的博客以及其他地方 保留字:变量等标识符可以再使用: 关键字:有特定含义,不能再次重新定义: 修饰字:类似保留字的功能,也就是说可以重用 ...
- java关键字(详解)
目录 1. 基本类型 1) boolean 布尔型 2) byte 字节型 3) char 字符型 4) double 双精度 5) float 浮点 6) int 整型 7) long 长整型 8) ...
随机推荐
- flex与相对定位在国内双核浏览器极速模式下的兼容性问题
在国内的浏览器中,360浏览器,QQ浏览器等绝大部分都是双核浏览器.双核浏览器即拥有IE兼容内核和非IE极速内核两个内核,分别对应兼容模式和极速模式.兼容模式时使用IE内核,极速模式采用webkit内 ...
- MySQL基于mysqldump快速搭建从库
MySQL主从搭建总的来说大致分为3个步骤: 1. 为主从实例添加复制所需参数以及创建复制用的账户 2. 需要 […]
- 139.00.005 Git学习-分支管理
@(139 - Environment Settings | 环境配置) 一.Why? 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交, ...
- 安装Chrome driver/ IE driver
2014-08-15 11:38 22100人阅读 评论(0) 收藏 举报 分类: python基础学习(97) >>>安装Chrome driver chrome driver ...
- python完全学习笔记
dir(__builtins__) help(input) 'let\'s go' #转义字符 \ r'c:\now' #字符串前加r 自动转义 str= ''' shdiufhi s ...
- js结构化命名的思考
var koooke ={androidShare:{ show : function() {alert(1000)}}};koooke.androidShare.show(); 以上JS是偶然缩写. ...
- anroid之异步不如异步
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR) 使用自定义的CorePoolSize为7的Executor(Executors.newFixedTh ...
- 论组织资源 #F315
论组织资源 #F315 2016-02-29 yevon_ou 水库论坛 论组织资源 #F315 首先,让我们看一段长微博. 转:五毛大战美分,基层民猪那破事... 就是小区业委会的事,根据业委会相 ...
- Oracle物化视图详解
现实工作中会有多个数据源同步到一个数据库完成数据分析的场景,这些数据可以不是实时同步的,我们一般通过定时任务抽取数据到统计分析库给应用使用. 一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数 ...
- windows下安装配置RabbitMQ
安装部署 1.当前环境以及参考资料出处 部署环境:windows server 2008 r2 enterprise 官方安装部署文档:http://www.rabbitmq.com/install- ...