我们前面提到过正常情况下,引用是没有办法直接赋值一个常量值的,因为引用是给变量起别名。
但是当const修饰引用的时候,情况有所改变,这时候我们可以赋值一个常数给常引用,const int& a = 10; // 原因是,当常引用被赋值为常数时,编译器会为它开辟内存,来存放常数。
看代码:
定义一个Human类,创建对象,最后一个是常引用赋值一个参数,会发现会调用构造函数,说明编译器会给它分配内存。 (调用构造函数,就是创建对象的过程,会分配内存)
const的引用无论指向什么值 -- 常量或者变量(当然类型要一直),都会开辟一片新的空间,将数据拷贝进去,相当于重新定义了一个数据。