C++基础2
2026/5/24 4:07:09 网站建设 项目流程

本文主要在于对引用进行更深一步说明。

1:引用不能改变指向,对A取别名AA后不能再给其他量取别名AA;

我们可以发现aa的值改为了10,但是a的值也改为了10,这说明aa=b;这个代码并非对引用的指向改变,而是直接改变了指向的对象本身,也就是a的改变,这也充分验证了引用就是取别名,只是另一个名字,多个不同名字的同一个量会一起改变。

2:引用在实践中主要用于函数参数的传递,普通的传参是一种值传递本质是一种拷贝,开辟了形参的空间,将实参的值传给形参,引用传参没有开辟空间,是对参数取别名然后对别名进行操作。这点在返回值传递时尤为突出,

在使用引用后我们不仅仅可以使用top获取栈顶数据而且可以直接利用这个函数直接修该栈顶的值这对效率大大提升。

3:引用返回同样有一些问题,我们在函数中定义的变量不能引用返回,这是因为引用返回是返回该量,但是我们离开函数会函数栈帧会被销毁,我们不能在访问到函数中的变量。

我们可以看到试图给c赋值失败了;

4:const在引用中的作用,普通对象可以用const引用,这是一种权限的缩小,但是别名具有const的性质不能再改变,只能读取其值,但是这里却没有影响到原本变量的使用,const变量不能用普通引用,这属于权限的放大是不正确的,同理const引用是可以给一些常量取别名我们看到编译器是不允许修改const用的值的,但是我们发现b1仍然会随着a,或者b2的修改而改变,这也i验证了引用就是取别名,const引用就是取一个只读的别名。const引用可以对一切具有常性质的变量使用,在c++中临时变量是具有常性的,我们在一些计算,求值时编译器会提供一个临时空间存这些值此时就会产生临时变量,我们可以看到此时d1的值为2,这是因为在从double 的转到int类型产生了一个临时变量d1是给这个临时变量取别名。

引用于指针的最大区别在于,从语法上讲引用不会额外开空间,指针会开空间,此外引用必须初始化,指针不必须,但是建议。然后引用可以直接使用,指针不可以需要解引用,引用指定对象后不可改变,指针可以。同时指针的大小是固定的,引用跟原一致。

5:inline修饰的函数叫内联函数会在编译时展开,不会建立新的函数栈帧,是为了应对C语言中的宏产生的,宏的本质是替换。

6:nullptr:c++专门为空指针产生的一种类型可以任意转换成其他指针类型,原本的NULL是一个宏c++中是0的字面意义,C语言中是0的被强制类型转化的void*类型C语言是允许void*直接转化成其他类型的但是c++不可以所以为了避免歧义使用了nullptr

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询