惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
C
Check Point Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
Last Week in AI
Last Week in AI
GbyAI
GbyAI
P
Proofpoint News Feed
量子位
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
B
Blog
T
The Blog of Author Tim Ferriss
H
Help Net Security
云风的 BLOG
云风的 BLOG

博客园 - 于光远

泛型编程 分区理论知识整理 SPI协议及驱动开发框架 I2C协议及驱动开发框架 使用qemu 加载linux-6.18.1内核 linux 内核 策略模式 单例模式 Linux性能分析:从监控到优化的完整工具链 C++模板元编程实现序列化与反序列化 bootchart linux 脚本打印时间 接口编程 不定参数解析,结合tuple 独立于main运行的程序 类模板继承 std::ostream & operator<< Flash HIDL --HelloWorld
引用
于光远 · 2024-05-07 · via 博客园 - 于光远
左值  右值   (纯右值,将亡值)             

可以在等号左边

只能在等号右边
能够取到地址 不能取地址
具名 不具名

1. 变量名

2.返回左值引用的函数

3.解引用   (*this)

4. ++i是左值

5. 声明出来的左值引用

6.右值引用

1.返回非引用类型的函数调用 (int func(void))

2.i++ 是纯右值

3. 算术,逻辑,比较表达式

4.将亡值:触发移动构造 或者 移动赋值构造,并资源转移,接着该值会调用析构函数

左值引用可以指向右值。 const int & , 不能修改这个值。

右值引用        int &&      为了解决能够修改这个值。

将左值改成右值。 std::move(v)

类对象有堆栈资源, 需要进行深拷贝。

A a ,b   

a=b   // 移动构造

---------

A a;

A b(a);  //拷贝构造

A c(std::move(a));  // 右值构造    对象赋值,避免对象的重新分配。 减少一次深拷贝,在创建对象的时候,直接将原先的数据地址进行转移。

移动构造,就是来解决,深拷贝的。

    避免对象拷贝

左值引用 右值引用

函数传参数

函数返回值

实现移动语义

实现完美转发 (在模板函数中,不改变原有的左右值属性,可以将自己的参数,完美的转给内部调用的其他函数)

 

借用万能引用func(T &&t){     //引用折叠,完美转发
f(std::forward<T>{t})
}

https://www.bilibili.com/video/BV14z4y1B7bd?p=2&vd_source=070088cf37075da9bc162f2560ec50eb