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

推荐订阅源

F
Fortinet All Blogs
Last Week in AI
Last Week in AI
IT之家
IT之家
A
About on SuperTechFans
M
MIT News - Artificial intelligence
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog
博客园_首页
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
Vercel News
Vercel News
博客园 - Franky
有赞技术团队
有赞技术团队
B
Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
量子位
云风的 BLOG
云风的 BLOG
T
Tailwind CSS 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