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) ...
随机推荐
- iview中关于table组件内放入Input会失去焦点
table里面的数据是一个数组,父组件传入的.子组件是截图的内容.当每个input框数据发生变化时,把数据传给父组件.在父组件做表单的提交. github内已经提到过这个问题(https://gith ...
- android 实现类似微信缓存和即时更新好友头像
引言 使用微信时我们会发现,首次进入微信的好友列表时,会加载好友头像,但是再次进入时,就不用重新加载了,而且其他页面都不用重新加载,说明微信的好友头像是缓存在本地的,然后好友修改头像后,又会及时的更新 ...
- JavaScript中filter()方法
方法概述 用于把数组(Array)的某些元素过滤掉,然后返回剩下的元素组成的数组. 语法: var filteredArray = array.filter(callback[, thisObject ...
- lua 中的上n级模块路径函数分享
--- 得到 lua 模块路径的上 n 级,返回的的字符串结尾有个 "." 字符 -- @usage getUpFloder("math.base.core", ...
- GIT团队合作探讨之三--使用分支
这篇文章是一个作为对git branch的综合介绍.首先,我们会看看创建branch,这有点像是请求一个新的项目历史.然后,我们看看git checkout是如何能够被用来选择一个branch,最后看 ...
- Python初学者第一天 Python安装及第一个Python程序
Python基础: 1day: 1.Python基础: A.编程语言介绍: a. 计算机只能理解0和1.编程即写一段按照一定规则写代码,让计算机帮你干活: b.机器语言:最底层的语言, ...
- CefSharp 浏览器核心,爬虫
CefSharp是什么 A framework for embedding web-browsing-like capabilities to a standard .NET application ...
- easyui学习笔记11—tab标签页和鼠标动作
这篇我们看看标签页是怎么实现的,默认情况下要靠点击切换标签,也可以用鼠标切换标签选项,就是鼠标放在标签上切换. 首先看看引用的资源文件 1.资源文件 <head> <meta cha ...
- D3——动态绑定数据
一.绑定数组元素 , , , , ]; d3.select("body") .selectAll("p") .data(dataset) .enter() .a ...
- [19/03/27-星期三] 容器_Iterator(迭代器)之遍历容器元素(List/Set/Map)&Collections工具类
一.概念 迭代器为我们提供了统一的遍历容器的方式 /* *迭代器遍历 * */ package cn.sxt.collection; import java.security.KeyStore.Ent ...