C++ 关于引用的思考

依稀记得教材中这样解释引用

1、引用是对象的别名
2、引用不是值,不占用内存空间
3、引用在定义时赋值,不将变量与引用绑定,不允许修改

产生疑问引用不占内存空间?难道凭空出现的?任何东西存在就一定有占位,否则这东西放哪呢?引用不允许修改?编译器是不是对其增加了类似const的修饰?

经过一系列验证,得出引用本质如下

1、引用是通过指针实现的
2、引用是一个常指针
3、引用占4个字节,指针大小
4、定义引用时,需要初始化指针

引用作为函数参数需要加const吗?

如果将引用作为函数参数时,是能够在函数内改变该对象的值的,就同指针修改内存空间中的数据一样。如果要保证只是访问此对象,不涉及修改的情况,需要加const,编译器会保护对象,只允许作为右值读,不允许写。否则会编译错误。

引用一定安全吗?(不允许修改引用的值)

相对指针安全,因为常指针不允许修改,但也仅仅从编译器层面保证,如果修改编译器在编译时会报错,是不能通过编译步骤的。但是如果通过其他手段,仍然可以在内存中恶意修改任何值

猜你喜欢

转载自blog.csdn.net/only_a_Heroic_car/article/details/127653015