当前位置: 首页 > article >正文

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

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

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& 延长临时变量生成周期?

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

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


http://www.kler.cn/a/447686.html

相关文章:

  • Redisson锁简单使用
  • 《庐山派从入门到...》板载按键启动!
  • 机器学习基础算法 (二)-逻辑回归
  • Spring(二)---基于注解的方式实现Bean管理和注入属性
  • Linux系统的阻塞方式和非阻塞方式是什么意思?
  • (OCPP服务器)SteVe编译搭建全过程
  • Python 从入门到实战46(Matplotlib绘制常用表)
  • sentinel学习笔记1-为什么需要服务降级
  • JUC并发工具---阻塞队列
  • 加电:DETR论文阅读
  • 基于鲲鹏服务器的打砖块小游戏部署
  • 《开启微服务之旅:Spring Boot 从入门到实践》(二)
  • 三种国产大语言模型Python免费调用
  • “在Python中,所有的数据都是对象”是什么意思?
  • 贪心算法求解跳跃游戏
  • 企业内训|高智能数据构建、Agent研发及AI测评技术内训-吉林省某汽车厂商
  • 对计算机网络中“层”的理解
  • Elasticsearch:什么是提示工程 - prompt engineering?
  • aosp15 - Activity生命周期切换
  • Ubuntu安装vue/cil(vue脚手架)
  • 排序算法 (插入,选择,冒泡,希尔,快速,归并,堆排序)
  • 【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南
  • 探索 Vue.js 组件开发:从基础到进阶的完整指南
  • 基于单片机的火灾报警器 (论文+源码)
  • 选择排序和冒泡排序;MySQL架构
  • 数字化制造新生态:共话无代码+AI落地实践