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

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Webroot Blog
Webroot Blog
U
Unit 42
A
About on SuperTechFans
宝玉的分享
宝玉的分享
月光博客
月光博客
C
CERT Recently Published Vulnerability Notes
P
Privacy International News Feed
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
P
Privacy & Cybersecurity Law Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Securelist
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
Apple Machine Learning Research
Apple Machine Learning Research
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
B
Blog
I
Intezer
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
V
V2EX
L
LangChain Blog
AI
AI
G
GRAHAM CLULEY
T
Tor Project blog
人人都是产品经理
人人都是产品经理
D
Docker
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
I
InfoQ
Y
Y Combinator Blog
C
Comments on: Blog
GbyAI
GbyAI
www.infosecurity-magazine.com
www.infosecurity-magazine.com
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
N
News and Events Feed by Topic
MyScale Blog
MyScale Blog
H
Help Net Security
Vercel News
Vercel News
T
Tenable Blog
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿

博客园 - 于光远

泛型编程 分区理论知识整理 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