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) ...
随机推荐
- Linux下mongodb
Linux下mongodb安装: 新建mongodb文件夹 下载安装包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3. ...
- dotnet watch+vs code提升asp.net core开发效率
在园子中,已经又前辈介绍过dotnet watch的用法,但是是基于asp.net core 1.0的较老版本来讲解的,在asp.net core 2.0的今天,部分用法已经不太一样,所以就再写一篇文 ...
- Windows下 Mysql启动报1067解决方法
前几天刚入职安装了一下Mysql 刚开始能打开 今天去公司发现启动不了服务 报1067错误, 在网上查看了一些方法,好多种版本..以下是本人的解决方法 1.打开运行-事件查看器--Windows日 ...
- 旋转数组的最小数字(C++ 和 Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的 ...
- js前台检测上传图片大小的总结
最近一直在做上传图片的前端检测,不通过后台就完成这个动作.但实际是,实际效果差强人意. html5的fileApi出来后,对文件的处理才变得方便了些,对它的简单介绍可以看我的前面的博客.现在支持的浏览 ...
- 从Linux访问Windows共享目录
今天装备用VMWare装台Linux服务器来学习Oracle数据库,由于安装包是下载到本地的Windows系统,需要拷贝到Linux虚机里面去.搞了半天.想到虚机网络设成桥接,然后访问.百度了一下.最 ...
- 测试mysql性能工具
mysqlslap mysqlslap可以模拟服务器的负载,并输出计时信息.它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用.测试时可以执行并发连接数,并指定 ...
- svn环境搭建
(一)svn介绍 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对代码文件.文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大 解决代码冲突困难 容易引发BUG ...
- memcached安装及.NET中的Memcached.ClientLibrary使用
一.安装服务端: 服务端:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip 64:http://blog.couchbase.c ...
- Struts2学习-ssh框架
SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架. http://www.cnblogs.com/laibin/p/5847111.h ...