C++临时变量的常量性

C++ 临时变量的常量性-CSDN博客

#include <iostream>
using namespace std;
void print(string& str) 
{cout << str << endl;
}int main()
{print("hello world");//print(string("hello world"));return 0;
}

编译器根据字符串"hello world"构造一个string类型的临时对象,这个临时对象具有const属性,当这个临时变量传递给非const的string&引用类型时,无法隐式完成类型转换。

#include <iostream>
using namespace std;
void print(const string& str) 
{cout << str << endl;
}int main()
{print("hello world");//print(string("hello world"));return 0;}

 这样写是可以的。

临时变量作为引用参数传递时,形参必须是常量引用?

为什么呢?

#include <iostream>
using namespace std;
class IntClass {
private:int x;
public:IntClass(int value) :x(value) {}friend  ostream& operator<<(ostream& os, const IntClass& intc);
};//重载 operator<<
ostream& operator<<(ostream& os, const IntClass& intc) {os << intc.x;return os;
}int main(int argc, char* argv[]) {cout << (IntClass(6) = IntClass(8)) << endl;
}

 结果是8

说明:

实际上临时变量是可以作为左值并被赋值的。

什么是左值?

这里这个友元函数我不是太懂。

IntClass(6)生成了一个无名临时变量并作为左值被修改,说明临时变量不是常量,只是编译器从语义层面限制了临时变量传递给非const引用。

临时变量所在的表达式执行结束后,它就会释放,所以修改一个临时变量是毫无意义的。

因此,C++编译器加入了临时变量不能作为非const引用实参这个语义限制,意在限制这个非常规用法的潜在错误。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/452495.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索 Coconut: Python 的新篇章

文章目录 探索 Coconut: Python 的新篇章背景&#xff1a;为何选择 Coconut&#xff1f;Coconut 是什么&#xff1f;如何安装 Coconut&#xff1f;简单的库函数使用方法1. 惰性列表2. 模式匹配3. 函数组合4. 协程5. 模式匹配数据类型 场景应用1. Web 开发2. 数据处理3. 异步编程…

【C++】类的默认成员函数:深入剖析与应用(下)

&#x1f4af;前言 回顾上篇文章&#x1f449;【C】类的默认成员函数&#xff1a;深入剖析与应用&#xff08;上&#xff09;中对构造函数、拷贝构造函数和析构函数的讨论&#xff0c;强调这些默认成员函数在类的创建、初始化和销毁过程中的重要性。 ✍引出本篇将继续探讨剩余…

【工具变量】A股上市企业大数据应用(2001-2023年)-参考柏淑嫄实践

数据简介&#xff1a;企业数字化转型的浪潮孕育出大数据&#xff0c;大数据技术是在数据处理和应用中释放大数据多元价值的必要手段。大数据作为企业发展的战略资源和生产要素对企业转型发展具有重要意义。对上市企业大数据应用程度进行测算不仅有助于了解大数据相关技术在企业…

Triton Inference Server 架构原理

文章目录 TensorRT-LLM & Triton Server 部署回顾部署梳理Triton 架构 为什么要使用 backend &#xff1f;triton_model_repo 目录结构Ensemble 模式BLS 模式 上篇文章进行了 TensorRT-LLM & Triton Server 部署 &#xff0c;本篇简单讲讲 Triton Inference Server 的架…

ECCV2024 Tracking 汇总

一、OneTrack: Demystifying the Conflict Between Detection and Tracking in End-to-End 3D Trackers paper&#xff1a; https://www.ecva.net/papers/eccv_2024/papers_ECCV/papers/01174.pdf 二、VETRA: A Dataset for Vehicle Tracking in Aerial Imagery paper&#…

基于ECS和NAS搭建个人网盘

前言 在数字化时代&#xff0c;数据已成为我们生活中不可或缺的一部分。个人文件、照片、视频等数据的积累&#xff0c;使得我们需要一个安全、可靠且便捷的存储解决方案。传统的物理存储设备&#xff08;如硬盘、U盘&#xff09;虽然方便&#xff0c;但存在易丢失、损坏和数据…

2013 lost connection to MySQL server during query

1.问题 使用navicat连接doris&#xff0c;会有这个错误。 2.解决 换低版本的navicat比如navicat11。

【LVGL快速入门(二)】LVGL开源框架入门教程之框架使用(UI界面设计)

零.前置篇章 本篇前置文章为【LVGL快速入门(一)】LVGL开源框架入门教程之框架移植 一.UI设计 介绍使用之前&#xff0c;我们要学习一款LVGL官方的UI设计工具SquareLine Studio&#xff0c;使用图形化设计方式设计出我们想要的界面&#xff0c;然后生成对应源文件导入工程使用…

人工智能公司未达到欧盟人工智能法案标准

关注公众号网络研究观获取更多内容。 据路透社获得的数据显示&#xff0c;领先的人工智能&#xff08;AI&#xff09;模型在网络安全弹性和防止歧视性输出等领域未能满足欧洲关键监管标准。 《欧盟人工智能法案》将在未来两年分阶段实施&#xff0c;旨在解决人们对这些技术在…

【计网】从零开始理解TCP协议 --- 拥塞控制机制,延迟应答机制,捎带应答,面向字节流

时间就是性命。 无端的空耗别人的时间&#xff0c; 其实是无异于谋财害命的。 --- 鲁迅 --- 从零开始理解TCP协议 1 拥塞控制2 延迟应答3 捎带应答4 面向字节流5 TCP异常情况TCP小结 1 拥塞控制 尽管TCP拥有滑动窗口这一高效的数据传输机制&#xff0c;能够确保在对方接收…

倍福TwinCAT程序中遇到的bug

文章目录 问题描述&#xff1a;TwinCAT嵌入式控制器CX5140在上电启动后&#xff0c;X001网口接网线通讯灯不亮&#xff0c;软件扫描不到硬件网口 解决方法&#xff1a;硬件断电重启后&#xff0c;X001网口恢复正常 问题描述&#xff1a;TwinCAT软件点击激活配置后&#xff0c;…

RHCE----时间服务器

配置 需要两个服务器&#xff0c;一个服务器&#xff08;服务端IP&#xff1a;192.168.19.130&#xff0c;客户端&#xff1a;192.168.19.131&#xff09; 客户端&#xff08;client131&#xff09; [rootserver1 ~]# vim /etc/chrony.conf 添加阿里云服务器&#xff0c;…

VMware虚拟机软件安装、卸载

VMware是一个软件.这个软件可以刻画出来多个不同配置的计算机硬件(裸机). VMware只能负责产生裸机,要想使用这台机器.需要为其安装操作系统. VMware常见的场景就是用来安装Linux操作系统.... 我们以后要学习大数据hadoop软件,hadoop软件在linux环境下安装.因此我们需要有台装有…

Kylin-Server-10-SP1通过网络升级到SP3

环境说明 虚拟化环境&#xff1a;VMware Workstation 16 Pro 测试镜像&#xff1a;Kylin-Server-10-SP1-Release-Build04-20200711-x86_64.iso Kylin-Server-V10-SP3-General-Release-2212-X86_64.iso 远程连接工具&#xff1a;MobaXterm 虚拟机配置&#xff1a;4C 4G 20G硬盘…

【深度学习中的注意力机制1】11种主流注意力机制112个创新研究paper+代码——缩放点积注意力(Scaled Dot-Product Attention)

【深度学习中的注意力机制1】11种主流注意力机制112个创新研究paper代码——缩放点积注意力&#xff08;Scaled Dot-Product Attention&#xff09; 【深度学习中的注意力机制1】11种主流注意力机制112个创新研究paper代码——缩放点积注意力&#xff08;Scaled Dot-Product A…

5G NR:UE初始接入信令流程浅介

UE初始接入信令流程 流程说明 用户设备&#xff08;UE&#xff09;向gNB-DU发送RRCSetupRequest消息。gNB-DU 包含 RRC 消息&#xff0c;如果 UE 被接纳&#xff0c;则在 INITIAL UL RRC MESSAGE TRANSFER 消息中包括为 UE 分配的低层配置&#xff0c;并将其传输到 gNB-CU。IN…

小白投资理财 - 解读资产指标

小白投资理财 - 解读资产指标 资产指标详情总资产&#xff08;Total Assets&#xff09;净资产&#xff08;Net Assets&#xff09;资产负债率&#xff08;Debt to Asset Ratio&#xff09;固定资产周转率&#xff08;Fixed Asset Turnover Ratio&#xff09;总资产周转率&…

软件开发的项目管理的风险有哪些?

软件开发项目管理中可能面临的风险&#xff1a; 序号风险类型描述1需求不明确项目需求没有被清晰定义或频繁变更&#xff0c;导致开发方向不明确或需要重做工作。2技术风险采用的技术可能存在缺陷或不兼容&#xff0c;或者团队缺乏必要的技术技能。3资源不足项目可能因为人力…

大数据存储计算平台EasyMR:大数据集群动态扩缩容,快速提升集群服务能力

在当今的数据驱动时代&#xff0c;组织面临着数据量的爆炸性增长。为了有效管理和存储这些数据&#xff0c;许多组织依赖于 Hadoop 这样的分布式存储系统。Hadoop 集群通过在多个节点上存储数据的冗余副本&#xff0c;提供了高可靠性和可扩展性。然而&#xff0c;随着数据量的不…

深⼊理解指针(2)

目录 1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. ⼆级指针 5. 指针数组 6. 指针数组模拟⼆维数组 1. 数组名的理解 我们在使⽤指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[…