【C++——临时对象,const T&】

对于我们C++中,const T&(左值常量引用)可以接收一个纯右值表达式,创建一个临时变量。

cpp 复制代码
const string& k(const string& i) 
{
	return i;
}

int main()
{
	//使用auto&就是"起别名"所以随着临时对象的销毁,这里什么也打印不出来
	//但是如果没有&就是一个拷贝(同样伴随内存开销)
	auto& result = k("abc");    //这样是不合法的,虽然有的编译器可以输出
	cout << result;   //调用了string("abc")转换构造函数 

	string s = { "xxx" }; 
	auto& result2 = k(s);     //这才是合法的
	cout << result2;

	return 0;
}

const T& 延长临时变量生成周期?

实际临时变量有自己生命周期的。

会存在到函数调用的全表达式结尾为止(立即销毁),如果函数返回一个生命周期长于全表达式的引用,会成为"悬垂引用"

相关推荐
SteveKenny17 分钟前
Python 梯度下降法(六):Nadam Optimize
开发语言·python
Hello.Reader1 小时前
深入浅出 Rust 的强大 match 表达式
开发语言·后端·rust
涛ing3 小时前
32. C 语言 安全函数( _s 尾缀)
linux·c语言·c++·vscode·算法·安全·vim
xrgs_shz3 小时前
MATLAB的数据类型和各类数据类型转化示例
开发语言·数据结构·matlab
独正己身3 小时前
代码随想录day4
数据结构·c++·算法
我不是代码教父6 小时前
[原创](Modern C++)现代C++的关键性概念: 流格式化
c++·字符串格式化·流格式化·cout格式化
利刃大大6 小时前
【回溯+剪枝】找出所有子集的异或总和再求和 && 全排列Ⅱ
c++·算法·深度优先·剪枝
子燕若水6 小时前
mac 手工安装OpenSSL 3.4.0
c++
来恩10036 小时前
C# 类与对象详解
开发语言·c#