课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
变量和指针的应用在软件编程开发项目中还是比较常见的一种组成元素,而今天我们就通过案例分析来了解一下,c++编程开发变量引用与指针。
一、变量引用
<1>
1:对常量使用extern关键字或者是&操作符时,内存中会新生成一份该常量对应的变量。
2:引用,是对某个内存空间冠以别名,对应的就是变量,变量才占有内存空间。而常量存储在符号表内,是没有地址的。
3:当对引用取地址,取到的地址是某个内存空间的地址。
4:引用的本质是别名,如果此时已经存在了内存空间,那么之后的所有引用都只是该内存空间的别名,并不会涉及到内存空间的分配。
<2>
const修饰栈上的数组,其数组元素是只读变量,而const修饰全局数据区的数组,其数组元素是常量。
<3>
const_cast的常用场景:
因为不能把一个const只读变量直接赋给一个非const变量,有时候却有这种赋值需求,那就必须要使用const_cast进行转换,避免编译器报错。
二、智能指针
智能指针一句话概念释义:智能指针类对象在其生命周期结束后会自动释放所指向且涉及到的相关所有堆内存。
智能指针三板斧:
1.在仅带一个参数的构造函数内对智能指针类内部的它类指针赋值,使其指向外部的它类对象。
2.使用成员函数的方式重载指针访问->操作符(返回值为智能指针内部的它类指针)和
*操作符(返回值为智能指针内部的它类指针指向的它类对象)。
3.在析构函数内delete它类指针(这就可以触发它类对象的析构函数被执行)。
按照上述已有的分析,我们现在或许可以写出令一个智能指针a指向一个智能指针b,再令b指向c…指来指去很多次,后才指向实际的用户对象,这样的代码,
稍加思考,这必将成为日后bug的一个来源。
良好的编程经验要求:一块堆内存多只能由一个指针来标识。
这是非常重要的一点,
接下来我们继续实现的拷贝构造函数和赋值操作符重载函数就被要求:
要完成指针指向内存所有权的转移(复制后,再delete原有的指针),而不是单纯复制。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。