全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++常量详解一(常量指针与常量引用的初始化)

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小时内与您取得联系。