1、常量

1.1、常量的初始化:
const对象一旦创建后其值就不能再改变,所以const对象必须初始化。这里我们要注意一点,像const int *p和const int &r都并不是const对象。因为const int *p只是表示不能通过p改变p所指的对象的值,p的值是可以变的,所以p可以不用初始化。至于r ,引用本身就不是对象,所以r也并不是const对象,r之所以一定初始化,是因为引用必须初始化。对于以上内容,你也可以理解为底层const 修饰的并不是const对象,还要注意像const int *const p1这种,这是一定要初始化的,这是const对象,因为它有一个顶层const。
1.1.1分清了const对象后,让我们先把目光聚集到const对象这里。
const对象可以分为大致三类:
const int m int *const p const int *const q
而这前两类都可以用来给非const对象或者const对象初始化,因为这前两类都是顶层const,初始化时的拷贝是不会对他们的自身值做出什么改变,即以下代码均正确。
//第一类 int m1=m;//正确 const int m2=m;//正确 //第二类 int *p1=p;//正确 int *const p2=p;//正确 const int *p3=p;//正确 const int *const p4=p;//正确
而第三类则需要我们注意一下,因为第三类还有一个底层const。
const int *const q
int *q1=q;//报错 int *const q2=q;//报错 const int *q3=q;//正确 const int *const q4=q;//正确
底层const有一个限制:当执行对象的拷贝操作时,拷入和拷出的对象必须具有相同的底层const。
我们可以这样理解:const int *const q如果可以拷贝初始化给q1、q2,那么意味着我们可以通过q1、q1来改变q所指的对象的值,那这样q的底层const还有什么意义呢?
以上,是说这三类可以给哪些对象初始化,现在我们看看哪些可以给这三类初始化
第一类const int m
//以下一些变量不初始化,我把重点落在类型。 int m1; const int m2; const int m=m1;//正确 const int m=m2;//正确
第二类int *const p
//以下一些变量不初始化,我把重点落在类型。 int *p1; int *const p2; const int *p3; const int *const p4; int *const p=p1;//正确 int *const p=p2;//正确 int *const p=p3;//错误 int *const p=p4;//错误
这里的报错同样因为底层const有一个限制:当执行对象的拷贝操作时,拷入和拷出的对象必须具有相同的底层const
第三类 const int *const q
//以下一些变量不初始化,我把重点落在类型。 int *q1; int *const q2; const int *q3; const int *const q4; const int *const q=q1;//正确 const int *const q=q2;//正确 const int *const q=q3;//正确 const int *const q=q4;//正确
1.1.2 现在让我们把目光转回非const对象的初始化
这里主要有两类:
//以下一些变量不初始化,我把重点落在类型。 const int *p; const int &r;
先考虑他们可以给哪些对象初始化
第一类 const int *p
//以下一些变量不初始化,我把重点落在类型。 int *p1=p;//报错 int *const p2=p;//报错 const int *p3=p;//正确 const int *const p4=p;//正确
此处同样由于低层const的限制
第二类 const int &r
//以下一些变量不初始化,我把重点落在类型。 int &r1=r;//错误 const int &r2=r;//正确
这里强调一下,引用不是对象,所以没有像 int *const &r或者const int *const &r这种形式
好,再考虑哪些可以给他们初始化
第一类 const int *p
//以下一些变量不初始化,我把重点落在类型。 int *p1; int *const p2; const int *p3; const int *const p4; const int *p=p1;//正确 const int *p=p2;//正确 const int *p=p3;//正确 const int *p=p4;//正确
因为const int *p意义在于表明不可以通过p改变它所指的对象的值,这个对象可以不是常量,只是p所指的对象对于p来说是常量,所以它所指的对象是否const 其实并没有关系。
第二类 const int &r
//以下一些变量不初始化,我把重点落在类型。 int &r1; const int &r2; const int &r=r1;//正确 const int &r=r2;//正确
这里const同样是指不能通过r改变它所引用的对象,所以它所引用的对象本身是不是const无关紧要。
纵观以上的错误,都是试图把底层const拷贝初始化给没有底层const的对象。
以上就是关于涉及到常量的指针和引用的初始化的解释了。
# C++常量详解
# C++ 指针常量和常量指针的区别小结
# 如何理解C++指针常量和常量指针
# C++常量指针
# 指针常量
# 指向常量的常指针详解
# 简单总结C++中指针常量与常量指针的区别
# C++中的指针常量、常量指针与常量指针常量详解
# 我把
# 落在
# 报错
# 第二类
# 第一类
# 都是
# 这是
# 两类
# 让我们
# 有一个
# 我们可以
# 第三类
# 他们的
# 是因为
# 这三类
# 就不
# 是指
# 可以用
# 不可以
# 要注意
相关文章:
上海网站制作开发公司,上海买房比较好的网站有哪些?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
深圳网站制作案例,网页的相关名词有哪些?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
建站之星安装失败:服务器环境不兼容?
如何通过山东自助建站平台快速注册域名?
宝塔面板创建网站无法访问?如何快速排查修复?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
制作网站公司那家好,网络公司是做什么的?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
家庭建站与云服务器建站,如何选择更优?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
建站VPS推荐:2025年高性能服务器配置指南
导航网站建站方案与优化指南:一站式高效搭建技巧解析
建站主机选哪家性价比最高?
seo网站制作优化,网站SEO优化步骤有哪些?
建站10G流量真的够用吗?如何应对访问高峰?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何在Golang中指定模块版本_使用go.mod控制版本号
建站之家VIP精选网站模板与SEO优化教程整合指南
定制建站方案优化指南:企业官网开发与建站费用解析
如何用IIS7快速搭建并优化网站站点?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何用景安虚拟主机手机版绑定域名建站?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
北京的网站制作公司有哪些,哪个视频网站最好?
如何通过FTP服务器快速搭建网站?
建站之星各版本价格是多少?
太平洋网站制作公司,网络用语太平洋是什么意思?
测试制作网站有哪些,测试性取向的权威测试或者网站?
建站主机与虚拟主机有何区别?如何选择最优方案?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
建站之星导航菜单设置与功能模块配置全攻略
如何获取免费开源的自助建站系统源码?
平台云上自主建站:模板化设计与智能工具打造高效网站
建站之星备案是否影响网站上线时间?
宝塔建站无法访问?如何排查配置与端口问题?
电商网站制作价格怎么算,网上拍卖流程以及规则?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
香港服务器网站推广:SEO优化与外贸独立站搭建策略
长沙企业网站制作哪家好,长沙水业集团官方网站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站主机选购指南:核心配置优化与品牌推荐方案
已有域名和空间如何搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。