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) ...
随机推荐
- js String字符串对象常见方法总结
String对象常用来保存文本形式的数据. 其转化方法有二种: String(s) new String(s) String对象方法有: charAt() charCodeAt() concat() ...
- Linux符设备驱动编程
加入内核源码树外 ① 建立两个文件scull.c,scull.h,以及Makefile文件 Makefile文件 ② 用make进行编译,生成scull.ko驱动程序模块 ③ 把scull.ko模块加 ...
- CSS浮动并清除浮动(造成的影响)
一.浮动 CSS浮动 CSS float浮动的深入研究.详解及拓展(一) CSS浮动属性Float详解 块级元素独占一行 块级元素,在页面中独占一行,自上而下排列,也就是传说中的流. 可以 ...
- HTML 段落p
可以把 HTML 文档分割为若干段落. HTML 段落 段落是通过 <p> 标签定义的. 实例 <p>This is a paragraph</p> <p&g ...
- 【Leetcode】【Medium】4Sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- VS断点不生效
工程属性页中“配置属性”->“C/C++”->“常规”->“调试信息格式”,选择“用于“编辑并继承”的程序数据库(/ZI)”. 在“配置属性”->“链接器”->“调试”- ...
- 《Tomcat与Java Web开发技术详解》思维导图
越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 ...
- TC9.0新增实用接口,用AutoHotkey获取当前选中文件等信息
TC9.0的history.txt里有几行更新说明(见文章末尾),可以用SendMessage命令获取信息, 消息号是WM_USER+50(即1074),wParam则是更新说明里的内容, 下面是我简 ...
- np.arrange用法
np.arange()经常用,其用法总结如下: np.arange(0,60,2) 生成从0到60的步距为2的数组,其中0为初始值,60为终值,2步距, np.arange(60) 生成从0到59的默 ...
- 【转】[C++]实现委托模型
原文地址:http://www.cnblogs.com/zplutor/archive/2011/09/17/2179756.html 我对.Net的委托模型印象很深刻,使用委托,可以快速实现观察者模 ...