m0_67001341 2023-06-07 10:59 采纳率: 69.2%
浏览 23
已结题

c++函数返回引用值

img


img

string &retLocal()这个里面的加了这个&和不加有什么区别吗?

我怎么感觉没区别

另外,retLocal这个函数不应该没有返回值吗?

string &retRef是一个局部变量的引用,按理而言,引用出了retLocal这个函数传到主函数后,应该就没有值了呀?

还有为什么我没有#include 也可以使用string ?

  • 写回答

3条回答 默认 最新

  • 关注

    先看个例子然后再针对你提问的问题细说:

    img

    你提问的问题:
    (1)函数类型后面带&,表示返回的是一个引用,不带&表示返回的是一个值。
    带&的时候,函数再返回时,返回的就是函数内的同一个变量!!!(记住这句话)。
    不带&的时候,函数返回时,回对返回值进行一次复制,如果返回的是一块大内存,不带引用回降低程序的效率。
    所以,带不带&实际上区别很大。
    (2)string &retRef是一个局部变量的引用,按理而言,引用出了retLocal这个函数传到主函数后,应该就没有值了.
    你的这句,理解是对的,跟我(1)中让记住的那句话是一个道理。
    所以,出了函数后,实际上retRef已经被回收了,在你的代码中能够正常显示,是因为分配给retRef变量的内存还没有被其它变量占用,所以能输出。你再对比我上面的贴图,我贴图中返回的是一个数组,再main函数中打印数组的时候,跟fun函数中的值就完全不一致!!
    (3)因为iostram库中引用了string类型,所以,包含了iostream后,能够使用string类型定义变量,但是,iostream中没有strlen()、strcpy()等这些函数,如果需要使用这些函数,则需要包含string头文件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥20 数电设计提问求帮助,出租车计费器
  • ¥15 shein测试开发会问些啥我是写java的
  • ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
  • ¥15 opnet仿真网络协议遇到问题
  • ¥15 在安装python的机器学习程序包scikit-learn(1.1版本)时遇到如下问题