前言
今天的博客我们来对const的使用以及注意细节做一下总结。
const一般在下面的地方使用
- 在对象前面使用声明为常对象(基本类型和常对象差不多)
- 在函数后面使用声明为常函数
- 在引用前使用声明为常引用
#常对象
常对象的数据成员值在对象的整个生命周期中是不能被改变的。因此,常对象必须进行初始化,而且不能被更新
const 类型说明符 对象名;//const也可以放在类型说明符后面
常对象注意点
- 不能通过常对象修改对象中的数据成员
- 不能通过常对象调用对象的非常函数
常成员函数
在函数的后面加上const使其成为常成员函数
类型说明符 函数名(参数列表) const;
常成员函数注意点
- const是函数类型的一个组成部分,我们在函数定义的时候也需要带上const关键字
- 在常成员函数中不能修改数据成员,不能调用非常成员函数(其实普通对象在调用常成员函数的时候也被视为了常对象)
- const关键字可以用于对重载函数区分。如果这样进行重载,我们在用非const对象进行函数调用的时候会选择调用没有带const的函数。
常数据成员
在数据成员前加上const使其成为常数据成员。
常数据成员的注意点
- 常数据成员此时只能通过初始化列表来初始化。
- 静态常数据成员也必须要进行初始化。但是静态常数据成员的初始化有两种方式
- 在类外进行初始化
- 直接在类中定义的时候进行初始化
常引用
在引用前使用const进行修饰
const 类型说明符 &引用名;
常引用的注意点
- 常引用引用的对象不能被更新
- 非常引用只能引用非常对象,而常引用两个都可以引用
- 非常引用无论引用的是常对象还是普通对象都将其作为常对象处理。其性质和常对象一样
FEATURED TAGS
Git
SSH
公钥和密钥
Android
截屏
高斯模糊
UI
Java
多线程
C
结构体
共用体
C枚举
内部类
设计模式
Java虚拟机
类加载机制
类加载器
指针
动态内存分配
JNI
C++
Gradle
Android布局
ConstraintLayout
Android架构
Jetpack
DataBinding
LifeCycle
LiveData
Room
ViewModel
属性动画
Transition
动画
Paging
web
xampp
Linux
嵌入式
qemu
静态代理
动态代理
AOP
扫描线填充算法
计算机图形学
ASM
ThreadLocal
源码
Gradle插件
Android Framework调试
编译Android系统源码
Android Native源码调试