C++关键字之const
C++的const关键字一直让我很乱,这里把const关键字在程序中常用的三个地方分别总结出来:
1、 通过指针或引用访问普通变量
2、 通过对象调用成员函数,通过成员函数访问成员变量
3、 通过形参传递实参
const修饰指针、引用、普通变量(通过指针或引用访问普通变量)
|
非const变量 |
const变量 |
|
|
非const指针或引用 |
1、指针或引用能变指向 2、变量能变值 |
不合法 |
|
const指针或引用 |
1、指针或引用不能变指向 2、变量不能通过该指针或引用变值,但能通过其他方式变值 |
1、指针或引用不能变指向 2、变量不能变值 |
Const修饰类对象、成员变量、成员函数(通过对象调用成员函数,通过成员函数访问成员变量)
|
非const成员函数 |
const成员函数 |
||
|
非const对象 |
非const成员变量 |
可读取可修改 |
可读取不可修改 |
|
const成员变量 |
可读取不可修改 |
可读取不可修改 |
|
|
const对象 |
非const成员变量 |
const对象全部成员变量均为const的 |
|
|
const成员变量 |
const对象不能调用非const成员函数 |
可读取不可修改 |
|
Const修饰形参、实参(通过形参传递实参)
|
非const实参 |
const实参 |
||
|
非引用 |
非const形参 |
可接受 |
可接受 |
|
const形参(在函数中跟非const形一样,可修改) |
可接受 |
可接受 |
|
|
引用 |
非const形参 |
可接受(不接受字面值、表达式、需转换类型的) |
不合法 |
|
const形参 |
可接受 |
可接受 |
C++关键字之const的更多相关文章
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- 关键字static/const的作用
static关键字的作用:(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值:(2)限制变量的作用域 ...
- c中常用的关键字static const volatile
在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数 ...
- C++关键字(1)——const
1. const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的.它的含义是:const修饰 ...
- C++关键字之const(整理!)
C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- C#readonly 关键字与 const 关键字的区别
1. const 字段只能在该字段的声明中初始化,readonly 字段可以在声明或构造函数中初始化.因此,根据所使用的构造函数,readonly 字段可能具有不同的值. 2. const 字段是编译 ...
- c# const与readonly 关键字的比较
C#中,const 与readonly是两个比较有用的关键字.const 与 readonly 定义的数据成员在初始化都不能再改变. 比如定义了 public class MathUtitlity ...
- readonly const关键字
readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数,readonly ...
- JS let和const关键字
ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const. Let关键字 1.用于作用域:块作用域,循环作用域,函数作用域,全局作用域, 在 ES2015 之前,Java ...
随机推荐
- mysql索引简单介绍
索引从本质上来说也是一种表,这样的表存储被列为索引的列项值和指向真正完整记录的指针.索引对用户透明.仅仅被数据库引擎用来加速检索真实记录.有索引的表.insert和update操作会耗费很多其它时间而 ...
- cocos2d-x 3.0 画图节点——Node
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- 【iOS开发之OC和JS互调】
1.OC中调用JS代码 公司的移动端需要加载一个现有的网页,并且要在原网页要做一些小的调整,如将网页的标题改一下加载到手机的app上,此时就可以在app的oc代码中加入JS代码来实现.如下例子,我要加 ...
- jquery向下取整
var currentMoney =Math.round((_memberCurrentPoints/_pointVsMoney)*Math.pow(10,2))/Math.pow(10,2) * 2 ...
- Mac下如何不借助第三方工具实现NTFS分区的可写挂载
问题背景 我想很多使用Mac的同学都会遇到读写NTFS磁盘的问题,因为默认情况下Mac OSX对NTFS磁盘的挂载方式是只读(read-only)的,因此把一个NTFS格式的磁盘插入到Mac上,是只能 ...
- static静态类与非静态类的区别
static静态类与非静态类的区别 1.在非静态类中可以有实例成员也可以有静态成员 2.在调用的时候需要使用对像名.实例成员调用(先要实例化,如person ps=new person(); ps. ...
- git基础使用小记
一.安装步骤省略二.运行“Git Bash“在打开的窗口中输入:ssh-keygen -t rsa -C "my@gmail.com" 会提示SSH Public Keys存放的位 ...
- PclZip:强大的PHP压缩与解压缩zip类
PclZip简介PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip.PKZIP):且能对此类类档案进行处理,包括产 ...
- Scala学习文档-访问修饰符
在scala里,对保护成员的访问比Java严格.Scala中,保护成员只在定义了成员的类的子类中可以访问,而Java中,还允许在同一个包的其他类中访问. package p1 { class FCla ...
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ( ...