const、引用与指针
2024-10-08 03:15:21
前提
我们忽略掉了相同类型是否可以赋值的情况(我到现在的学习里都还可以相互赋值),以及类型兼容的情况。只考虑const、&、*等修饰符带来的影响
类型兼容:
- 强制类型转换
- 基类与子类间的兼容
- 类的构造函数类型兼容(构造函数的参数类型可以转换为该类的类型,仅转换一次)
前置const与后置cconst
const:
- const初始化的变量要必须绑定一个值(变量还是常量都行)
- 这个绑定值可以隐式或者显示,大部分时候用显示更安全
- eg:string等容器,使用构造函数可以进行隐式默认初始化,const string str;就是合法的
前置const:
前置const写在其他修饰符前面,也就是距离变量较远的地方
- 此类const修饰的变量一般指向的对象可以是变量也可以是常量
- 不可修改指向的对象
- 也不可以将该变量赋值给同类型的无const修饰的变量
后置const:
- 用此类const修饰的变量,变量都会变为常量
- 常量是右值,不能进行赋值操作
- 常量是可以进行初始化赋值的
const指针
指针:
- 会有自己的空间
- 指向目标对象
const type *ptr
此ptr 认为 自己指向的是一个常量,不能改变所指对象的值,但还是可以释放掉内存,该ptr也是一个变量(左值),可以进行赋值,但不能让它赋值给无const修饰的同类型的指针
type *const ptr
- 该ptr是常量(右值), 不接受赋值操作,ptr现在也变成了const常量
- 可以进行初始化赋值
const引用
(无const修饰)引用:
- 必须绑定一个左值
- 取的另一个别名
- 只能初始化进行绑定一次
const type &temp = variate
variate可以是常量,也可以是变量,temp不能改变
(const type &temp 可以绑定右值,但是右值不一定都是const类型,这样绑定后可能会使得temp失去原来右值的部分功能)
- temp会成为一个常量
type & const temp = variate
规定不能这么写,可以进行,个人猜测:const temp是一个常量写法进行赋值,在加上&,是一个引用写法,引用是取别名,与有着实际意义的cosnt常量矛盾
最新文章
- Types of CQRS
- html2canvas手机端模糊问题
- oracle row_number()
- 七天学会NodeJS-学习笔记
- QTableWidget嵌入QpushButton后定位是哪一个QpushButton
- Import user's Environment path into Linux cron task
- C++对象模型浅析
- freemarker错误七
- Tomcat启动时报错:java.net.UnknownHostException
- 苹果App Store开发者帐户从申请,验证,到发布应用(2)
- 2015 多校联赛 ——HDU5335(Walk out)
- debian 安装jdk
- CWindowDC与CClientDC,CPaintDCC的区别
- python socket 套接字编程 单进程服务器 实现多客户端访问
- 扫盲记-第六篇--Normalization
- JVM调优原理
- [mysql] mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
- 使用Eclipse对FFmpeg进行调试
- java基础55 UDP通讯协议和TCP通讯协议
- WCF中的AddressHeader作用
热门文章
- vue生成条形码/二维码/带logo二维码
- python中如何去除列表中重复元素?
- Python学习之enumerate
- windows下bat批量处理启动exe
- 浏览器标准模式与怪异模式-CSS1Compat and BackCompat
- 深入浅出 Java Concurrency (12): 锁机制 part 7 信号量(Semaphore)[转]
- 写一个网页进度loading
- vscode, eslint, prettier, vetur冲突及解决
- 2019.10.25 csp-s模拟测试87 反思总结
- springboot整合mybatis通用Mapper