【c++ primer学习笔记之引用】

定义

c++使用&符号来声明引用,即为某变量的别名。

int rats;
int & rodents = rats;

正如char *是指指向char的指针一样int &指的是指向int的引用,上面rodents和rats可以互换,因为他们指向同一块内存单元。

特性

rodents和rats的值和地址相同,其中一个值的改变,同食会影响另一个。

与指针的区别

1.必须在声明引用时将其初始化,而指针可以先声明再赋值;

2.引用更接近于const指针,必须在创建时初始化,一旦与某变量关联起来,则将一直效忠于他;
const类型的指针
指向const变量的指针和const指针的区别:

使用场景

用作函数参数

按引用传递允许被调用函数访问调用函数中的变量,避免了值传递方式导致的值拷贝,c语言目前只能使用指针来避免值拷贝。

注意事项

1.引用作为函数入参,与值传递不同,在调用该函数时,不能接受将常量作为入参传递给该被调函数(如:double z=refcube(x+3)),以前遇到此从情况则函数会生成一个临时变量,并将引用指向此临时变量,现在只能在入参为const定义时才可能产生临时变量,否则编译器会报错;
2.创建临时变量的场景:
*** (1)实参的类型正确但不是左值***
*** (2)实参的类型不正确但可转化为正确类型***
左值的定义

const引用作为入参的优点

const引用优点

引用作为函数的返回值

引用作为函数返回值定义

优点:传统返回机制与值传递函数参数类似,计算关键字return后面的表达式,并将结果返回给调用函数,即这个值被复制到了临时位置,而调用函数使用了这个值。但是返回引用时,直接将引用指向的变量给到调用方,减少了一次复制过程,对于返回类型比较大(结构体,类的对象等)的情况,效率更高。
注意:避免返回函数终止时不再存在的内存单元的引用;
(1)返回结构体对象的错误示例:
返回结构体对象的错误示例
(2)返回类对象引用的错误示例:
返回对象引用的错误示例
避免错误的解决方法:
(1)在函数中new一个指针,并返回该指针值的引用,后面记得delete;
(2)返回入参,该入参为引用类型。

对象、继承和引用

继承的一个特征是,基类的引用可以指向派生类的对象,而无需进行强制类型转换。则可以定义一个接受基类引用作为参数的函数,调用该函数时,调用函数时可以将基类对象作为参数,也可以将派生类对象作为参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值