c++入门基础(三)
文章目录
- const引⽤
const引⽤
C++规定临时对象具有常性
这是非常重要的一句话。
可以引用⼀个const对象,但是必须用const引用。const引用也可以引用普通对象,因为对象的访问权限在引用过程中可以缩小,但是不能放大。
可以权限的缩小,但是不能权限的放大
不需要注意的是类似 int& rb = a3; double d = 12.34; int& rd = d; 这样⼀些场景下a3的和结果保存在⼀个临时对象中, int& rd = d也是类似,在类型转换中会产⽣临时对象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性
,所以,在这种情况下,就触发了一种权限放大的机制。对于某些特定的操作或访问,原本可能不需要太高级别的权限,但由于某些特殊条件或设置的触发,现在必须要求使用常引用(或者说是常规引用、标准引用)才能进行相应的操作或访问。
这种权限放大的机制,往往是为了增强系统的安全性,防止未经授权的访问或操作。通过要求使用常引用来进行某些敏感操作,系统可以更加严格地控制权限的分配和使用,从而确保只有经过授权的用户或程序才能访问或修改关键数据。
所谓临时对象,是指在程序执行过程中,当编译器需要一个临时空间来暂存表达式的求值结果时,会自动创建的一个未命名的对象。在C++编程语言中,这种由编译器自动生成且未明确命名的对象,被特别地称为“临时对象”。
临时对象的存在,主要是为了支持表达式的计算,尤其是在进行复杂的数据类型运算时。例如,在函数返回非引用类型的对象时,或者在执行某些运算符重载函数时产生的中间结果,都可能需要借助临时对象来存储。