2312d,d重载+=号

原文
我正在试为重载opOpAssign.已编译代码,但似乎不管用.

//已为`值`实现了`二元`操作,我需要`+=,-=,*=,/=`
auto opOpAssign(string op)(Value rhs)
{mixin("return this" ~ op ~ "rhs;");
}
auto opOpAssign(string op)(in ElementType rhs)
{mixin("return this" ~ op ~ "rhs;");
}

在此缺少什么?完整项目在此.
我忘了提,它只与Value类相关.
单元测试失败:

//测试`opOpAssign`
auto g = value(0);
g += value(3);
assert(g.data == 3);

检查OP.可以肯定,它是"+"而不是"+=".所以未保存元素.还有这里没有成员.

是的,op"+".你说没有保存?我试重新赋值this,并返回.但失败了.
我想实现如下,但使用"+=":

auto g = value(0);
g = g + value(3);//在此,应该创建`'g+value(3)'`的新实例,并保存到`'g'`中g += value(3);

该如何实现?

你的代码只是返回结果值,
但它不应返回,而应保存结果到"this"
见重载赋值中的示例.

我得到一个错误,但不明白为什么?

auto opOpAssign(string op)(Value rhs)
{this = this + rhs;return this;
}
//错误:`"this"`不是左值,无法修改

也许:

auto opOpAssign(string op)(Value other) {mixin("this.v " ~ op ~ "= other.v;");return this;
}

赋值对象与复制指针一样.你可能认为可试重载赋值,但这是禁止的:这里
但是,对类类型,禁止赋值标识.所有类类型都是引用语义,因此默认,赋值标识会重新绑定左侧右侧参数,这是不可覆盖的.

但你不是这样做.
相反,你正在试重新赋值this引用,该引用是局部的(也是禁止的).想一想,你的this+rhs要分配给一个新对象.

然后,如果成功赋值局部this参数,则在成员函数之外会怎样?就不会更新调用this真正引用!
唯一方法是重新实现op=,或执行操作并交换.
-史蒂夫
谢谢你的详细解释!确实.

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

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

相关文章

我的一天:追求专业成长与生活平衡

早晨的序幕:奋斗的开始 今天的一天始于清晨的6点47分。实现了昨天的早睡早起的蜕变计划。洗漱完成之后,7点17分出门,7点33分我抵达公司,为新的一天做好准备。7点52分,我开始我的学习之旅。正如我所体会的,“…

CN3302 PFM升压型双节电池充电控制集成电路外置MOS管 双节锂电池充电IC

CN3302是一款工作于2.7V到6.5V的PFM升压型双节鲤电池充电控制集成电路。CN3302采用恒流和准恒压模式(Quasi-CVTM)对电池进行充电管理,内部集成有基准电压源,电感电流检测单元,电池电压检测电路和片外场效应品体管驱动电路等,具有外…

企业网络常用技术-快速生成树RSTP原理与配置

STP协议虽然能够解决环路问题,但是收敛速度慢,影响了用户通信质量。如果STP网络的拓扑结构频繁变化,网络也会频繁失去连通性,从而导致用户通信频繁中断。IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP(Rapid …

微信基于StarRocks的湖仓一体实践

作者:StarRocks Active Contributer、微信 OLAP 内核研发工程师 微信作为国内活跃用户最多的社交软件,其数据平台建设经历了从 Hadoop 到 ClickHouse 亚秒级实时数仓的阶段,但仍旧面临着数据体验割裂、存储冗余的问题。通过 StarRocks 的湖仓…

时钟偏移与时钟抖动

1、时钟偏移 如下图所示,由于布局布线导致,clk到达三个触发器的时间是不一样的。这个就是时钟偏移,对每个触发器而言,不会改变时钟周期。 2、时钟抖动 如下图所示,指芯片的某一个给定点上时钟周期发生暂时性变化&…

【Spring】15 ApplicationContextAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架提供了许多回调接口,用于在 Bean 的生命周期中执行特定的操作。ApplicationContextAware 接口是其中之一,它允许 Bean 获取对 A…

Collection体系的综合案例--斗地主游戏

需求: 在启动游戏房间的时候,应该提前准备好54张牌,完成洗牌、发牌、牌排序、逻辑。 分析: 当系统启动的同时需要准备好数据的时候,就可以用静态代码块了。 洗牌就是打乱牌的顺序。 定义三个玩家、依次发出51张牌 …

SM5321 是一款带动态路径管理的开关型单节锂电池充电电路。

SM5321 2.5A.1MHz 带动态路径管理的开关型单节锂电池充电电路 简介: SM5321 是一款带动态路径管理的开关型单节锂电池充电电路。SM5321 可提供 2.5A 的充电电流,特别适合移动电源、平板电脑等配备超大容量锂电池的设备。SM5321 内部集成了大电流同步降压…

SpringBoot 使用Quartz执行定时任务对象时无法注入Bean问题

文章目录 问题描述解决方案结束语 大家好!今天是2023年12月212日 | 农历十一月初九(距离2024年还有一周左右的时间),最近还是比较忙的,忙着搞钱,毕竟马上过年啦。 问题描述 感谢大家对我一直以来的支持与帮助,今天这边…

S7DB类型

DataType: 0x01 - BIT:一个无符号的bit0x02 - BYTE:一个8位的数字0x03 - CHAR:一个字符0x04 - WORD:两个字节宽的无符号整数0x05 - INT:两个字节宽的有符号整数。0x06 - DWORD:四字节宽的无符号整数0x07 -…

IDEA 黑色主题很难看到鼠标

“控制面板”—搜索“鼠标”关键字—选择“更改鼠标设置” 参考: IDEA 黑色主题很难看到鼠标

JDBC常见的几种连接池使用(C3PO、Druid、HikariCP 、DBCP)

✨前言✨ 本篇作为主要在于介绍jdbc数据库连接池,以及多种连接池的用法 🍒欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍒博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 文章目…

计算机基础:网络基础

目录 一.网线制作 1.制作所需要工具 网线制作标准 ​编辑 2.水晶头使用 3.网线钳使用 4.视频教学 二.集线器、交换机介绍 1.OSI七层模型 2.TCP/IP四层参考模型 3.集线器、交换机。路由器介绍 集线器 交换机 路由器 区别 三.路由器的配置 1.路由器设置 说明书 设…

智能优化算法应用:基于水基湍流算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于水基湍流算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于水基湍流算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水基湍流算法4.实验参数设定5.算法结果6.…

ansible剧本playbook

Palybook组层部分 tasks 任务包含要在目标主机上执行的操作,使用模块定义这些操作,每个任务都是一个模块的调用variables变量:存储和传递数据,变量可以自定义,可以在palybook当中定义为全局变量,也可以在外部传参temp…

Python:正则表达式---贪婪匹配

在正则表达式中,贪婪匹配是指匹配尽可能多的字符,而非贪婪匹配(也称为懒惰匹配或最小匹配)则是匹配尽可能少的字符。 .* 表示匹配任意数量的任意字符(除换行符外)。贪婪匹配会将尽可能多的字符都作为匹配结…

macOS 安装 oh-my-zsh 后 node 报错 command not found : node

最近为了让终端中显示 git 分支的名称,安装了 oh-my-zsh ,安装之后呢,我原先安装的 Volta、 node 都没法用了,报错如下: 这时候粗略判断应该是系统变量出了问题,oh-my-zsh 的变量文件是 ~/.zshrc&#xff0…

变分自动编码器【03/3】:使用 Docker 和 Bash 脚本进行超参数调整

一、说明 在深入研究第 1 部分中的介绍和实现,并在第 2 部分中探索训练过程之后,我们现在将重点转向在第 3 部分中通过超参数调整来优化模型的性能。要访问本系列的完整代码,请访问我们的 GitHub 存储库在GitHub - asokraju/ImageAutoEncoder…

Linux(二)常用命令

文章目录 一、文件管理命令1.1 chmod1.2 chown1.3 cat1.4 cp1.5 find1.6 head1.7 tail1.8 less1.9 more1.10 mv1.11 rm1.12 touch1.13 vim1.14 >和>>1.15 scp1.16 ln1.17 怎么用命令查看日志 二、文档管理命令2.1 grep2.2 wc2.3 echo 三、磁盘管理命令3.1 cd3.2 df3.3…

短视频账号矩阵系统3年独立开发正规接口源码搭建部署开发

一、矩阵系统源码主要有三种框架: 短视频账号矩阵源码的框架有很多种,以下列举其中几种: 1. **星图矩阵**:星图矩阵是抖音官方向商家提供的短视频广告推广平台,是抖音官方的赚钱工具。商家可利用星图矩阵进行广告推广…