返回引用到底什么意思????

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回引用到底什么意思????相关的知识,希望对你有一定的参考价值。

int &f(int &x)

return x;


int a = 10;
int b = f(a);

函数 int &f(int &x) 接受一个引用和返回一个引用
x就是a 写个表达式就是 int & x=a;

如果是一般返回的话 int f(int &x) 这样我明白
直接返回x的值
x在函数结束时 就被销毁啦 其内容被复制到寄存器中 然后复制给b
(我说的对吗?)

int &f(int &x) 这样返回有点弄不明白 返回类型是 int引用
返回的值被赋值给b 是不是不用复制x的内容到寄存器 直接把x的值赋值给b拉? 函数结束时x还存在吗?
其间是不是创建啦个临时变量啊?
如返回x时 int & m=x; m引用为x 然后传递给b??

我不知道我说的对不对 大家帮我指点下
详细点

1、如果单纯的从返回值来看,返回引用,除了减少个把临时变量的产生之外,没什么大不了的。
2、返回引用,更主要的目的是楼上说的,为了左值运算。

就你说的那个销毁问题,实际上,
不管是 int f( int& x ) 还是 int& f( int& x ) 中的 x,在 f函数结束后,都不可能销毁的,因为它本来传入的时候就是一个引用类型,它不是值类型。
引用是什么?引用是别名,只是在f函数结束后,x这个别名失效了而已,x所代表的变量,仍然还存在。因为它存在于调用f函数之前的作用域里,至于x所代表的变量什么时候被销毁,在这处 int f( int& x ) 函数中是绝对看不出的。

如果返回引用,那么我们可以有这样的应用。
比如有函数 int& f( int& x ) return x;

那么,我们调用的时候,可以写这样的代码

int a;
f( x ) ++;

如果 f 函数不是返回引用的话,f( x ) ++ 语法虽然没有错,但是结果不会保存到 a 中,这就是一个左值功能的应用。
参考技术A 简单的说
一般返回 是把值复制再返回 会占用内存空间的
返回引用是 直接返回其值 就是直接了当的给你啦 节省空间 不用再复制拉

返回类型是 int &a 这个就直接返回值给调用它的程序
返回类型是 int a 返回时会把a的值复制一份(分配空间) 再把值返回给调用它的程序本回答被提问者采纳
参考技术B 因为这个函数的形参本身就是一个引用,将这个引用返回以后,那么就相当于这个函数的返回值就是实参本身。
也就相当于f(a)等价于a,而由于引用本身是不会开辟内存空间的,所以对于f(a)的操作,就相当于对a本身的操作
参考技术C 引用是为了提高效率。及左值功能 参考技术D 类似指针,如:
string
s="asdfgh";
s的内容并不是asdfgh,而是指向他的引用,因为s是对象

webpack打包文件中的@符号表示什么意思

  在看使用webpack打包的项目代码时,经常会看到在路径中引用@符号

import  one from ‘@/views/one.vue‘

  

  那这里的@符号到底表示什么意思呢?

  这其实利用了webpack的  resolve.alias  特性,webpabk.config.js  的配制代码如下,在webpack打包时,会把路径引用中的@符号,转换为相对应的路径。

const path = require("path");
function resolve(dir) 
    return path.join(__dirname, ‘..‘, dir);


module.exports = 
    resolve: 
        extensions: [‘*‘, ‘.js‘, ‘.vue‘],
        alias:
            ‘vue$‘: ‘vue/dist/vue.common.js‘,
            ‘@‘: resolve(‘src‘)  // 通过这里的配置,@符号等同于src
        
    

  

  

以上是关于返回引用到底什么意思????的主要内容,如果未能解决你的问题,请参考以下文章

C++基础问题 需返回局部对象的引用时的处理

C++中"&"代表引用时这个语句是什么意思?

c++中的左值和右值,右值引用到底是啥?关于引用这一节看得很迷糊。

c++中重载输出流对象,为啥要返回引用

C++里面,为啥重载前++时不返回引用就不能连用?

关键字“this”是不是返回引用或值