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) ...
随机推荐
- 软件项目技术点(6)——结合鼠标操作绘制动态canvas画布
AxeSlide软件项目梳理 canvas绘图系列知识点整理 我们创建一个类封装了所有鼠标需要处理的事件. export class MouseEventInfo { el: HTMLElemen ...
- js常用代码-笔记
1.字符串截取substr(str,length)返回从指定位置开始,截取length长度的子字符串.substring(start,end)返回从start开始到end结束的字符串.end不写就到结 ...
- TE7下的创建组件AxHost失败
问题比较诡异.时好时坏的.网上的办法试过了,没用. 最后的解决办法是,把项目属性切换到Any CPU,然后勾选 32位优先,切换到界面设计状态,拖放控件,OK:运行,会出现红色提示:再次切换到项目属性 ...
- CRM系统知识点之一权限(RBAC)
一个项目可以有多个应用 一个做成组件 一个做逻辑判断一个应用(做成组件形式)可以服务于多个项目 rbac权限(role-base access control)who what how什么样的角色对什 ...
- idea打jar包
昨天碰到个问题:使用idea打成jar包,但是在测试环境一直报错.参考: http://blog.csdn.net/aotian16/article/details/52198378 之后发现原来的j ...
- velecity报错:Caused by: org.apache.velocity.exception.ParseErrorException: Lexical error, Encountered: <EOF> after : "\'/order/pay?activity=\" + activityId);\r\n }*/\r\n</script>\r\n#end\r\n" at /a
Caused by: org.apache.velocity.exception.ParseErrorException: Lexical error, Encountered: <EOF> ...
- android启动应用
private void openApp(String packageName) { PackageInfo pi = getPackageManager().getPackageInfo(packa ...
- vscode环境配置
"go.goroot": "/home/ken/go", "go.gopath": "/home/ken/gopath" ...
- input输入框数字验证
正则限制input只能输入大于零的数字:onkeyup="this.value=this.value.replace(/\D|^0/g,'')" onafterpaste=&quo ...
- cnpm install 之后 Angular2 Build --prod 报错
95% emittingUnhandled rejection Error: ENOENT: no such file or directory, open 'E:\git_0.28\adminTem ...