为什么使用引用限定符 & 声明删除的赋值运算符

2024-01-02

据我所知,用户声明的赋值运算符与内置运算符不同,如所解释的这个 stackoverflow 答案 https://stackoverflow.com/a/16995559/3054219。但是为什么要在已删除的运算符中添加“&”呢?

// C++
class MyType
{
public:
 // ...

  MyType& operator=(MyType const&) & = delete;
  MyType& operator=(MyType &&) & noexcept = default;

// more
};

我问这个问题是因为我的静态代码检查器报告了此处的规则违规,并且我认为没有理由为已删除的运算符添加“&”。我错过了什么吗?


没有理由添加&在这种情况下是限定符。

关键是要防止你的类被复制分配,就这样。目的&限定符是为了防止rvalue您的班级的可复制分配(&在这种情况下会阻止复制赋值运算符成为可行的函数)。但这不是你的目标——你想要all复制分配格式不正确,所以这就是:

MyType& operator=(MyType const&) = delete;

并向编写静态检查的人抱怨。


问题在于:

MyType& operator=(MyType const&) & = delete;

您要删除的运算符的额外精度是否暗示了不存在的意图。我立即想到,在课程稍后的某个地方,出于某种原因,你是否有:

MyType& operator=(MyType const&) && { ... }

但你不这样做,因为那很愚蠢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用引用限定符 & 声明删除的赋值运算符 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 非常简单的c ++:fstream中的运算符>>在读取某些内容后是否会删除换行符?

    file in 12 13 main cpp fstream f file in ios in int n char c f gt gt n f get c 提取数字12后 下一个字符是什么 是换行符还是 1 如果我调用 getline 而
  • Android 数据绑定与自定义视图

    The Android 数据绑定指南 http developer android com tools data binding guide html讨论了活动或片段中的绑定值 但是有没有办法使用自定义视图执行数据绑定 我想做这样的事情
  • 使用 OpenSSL.NET 和现有密钥解密 RSA

    我有以下代码使用 OpenSSL Net 生成 OpenSSL RSA 公钥和私钥 但是 我似乎找不到使用给定私钥解密数据的方法 我知道如果我调用生成密钥 然后调用相应的方法来加密和解密数据 它就可以正常工作 但是 如果我尝试从给定公钥的外
  • 找到R中两个数据帧之间的公共ID

    有以下数据框 id1 lt c 1 2 3 4 5 spent lt c 10 20 30 40 50 id2 lt c 1 3 4 x lt c 1 2 2 df1 lt data frame id1 spent df2 lt data
  • MVC 架构和模态对话框窗口

    我正在开发一个MVC架构的项目 它应该是一个管理一些客户的简单应用程序 MainModel MainView 和 MainController 类使主窗口显示客户表的内容并让用户插入 删除或编辑客户 我的问题是插入和编辑按钮应该显示一些对话
  • 将主键int类型更改为serial

    有没有办法在不删除表的情况下将现有主键类型从 int 更改为串行 我表里已经有很多数据了 我不想删除它 将 int 转换为序列或多或少仅意味着向值添加序列默认值 http www postgresql org docs 9 3 static
  • Kubernetes POD 参数未传递到服务,但 Docker 参数正确传递

    问题陈述 我已经成功创建了一个 Docker 镜像docker io joethecoder2 spring boot web 它已经使用命令行参数进行了测试 并且这些参数可以在 Docker 本地正常工作 我正在尝试将传递给 Docker
  • 推送视图应以透明背景显示

    我只是从一种观点推论另一种观点 在此代码之后 推送的视图将显示为透明 我之前已经用过很多次了 就这么简单 settings set settings alloc initWithNibName settings bundle nil set
  • req.body 无法作为数组读取

    我正在使用 node js 接收发布请求 请求正文在使用打印后具有此内容console log object 1 deviceType iPad Retina guid DF1121F9 FE66 4772 BE74 42936F1357F
  • 添加锚点到 RedirectToAction 结果?

    我正在尝试创建一个类似于的扩展方法MVCContrib 的 RedirectToAction 方法 http mvccontrib codeplex com SourceControl changeset view c0a43d6843a7
  • iOS Foundation:系统字体大小

    我想知道iOS应用程序tableView中的systemFontSize是否是always文本标签也一样吗 这是取决于风格 例如当我NSLog f UIFont systemFontSize 我已经14 0了这总是一样的吗 更重要的是 如何
  • 创建具有多个选项的 Python 函数的最佳方法?

    我定义了一堆自定义函数 并发现其中很多包含一些相同或相似的代码块 例如 仅包含略有不同的字符串或参数 所以像这样 def func1 a b c some identical code some similar code more iden
  • 有没有办法将 Linux 管道设置为非缓冲或行缓冲?

    我的程序正在控制 Linux 上的外部应用程序 通过管道将输入命令传递到外部应用程序 stdin 并通过管道从外部应用程序 stdout 读取输出结果 问题在于 对管道的写入是按块缓冲的 而不是按行缓冲的 因此在我的应用程序接收外部应用程序
  • 如何在 Bigquery 中查询多个 Firebase 项目?

    如何放置 Select 查询以从多个 Firebase 项目中提取数据 如何在单个查询中查询 abc 项目和 xyz 项目 目前 我正在放置两个查询来从项目 abc 和 xyz 及其数据集表中提取数据 查询abc项目 SELECT app
  • 如何使用低级 8 位标志作为条件?

    在我的键盘钩子中 每次按键都会有一个标志 表明它是否被注入 http msdn microsoft com en us library ms644967 VS 85 aspx http msdn microsoft com en us li
  • 2d std::vector 连续内存?

    考虑下面的代码 它分配了一个 2dstd vector
  • chmod 757 安全吗?

    由于我在共享主机上 我想添加一个图像托管脚本 似乎755不允许我上传图像 所以我将文件夹更改为757 chmod到757安全吗 一句话 不 用两个字来说 见鬼 不 让我们解释一下757 那就是 所有者 读写执行 对文件具有权限的组 读取 执
  • 在 MS Access 中插入具有日期范围的多条记录

    希望有人可以帮忙吗 我对 Access 2016 还很陌生 我的任务是为我们学校的早餐和课后俱乐部构建一个非常简单的预订系统 我有一个包含儿童列表的表 主键是 ChildID 另一个表 CLUBS 列出了 5 个可用的俱乐部 第三个表 BO
  • 使用 Castle.Windsor 设置 FluentValidation 时出现问题

    我有一个 asp net MVC 4 5 应用程序 使用 Castle Windsor 3 2 2 作为 DI 我第一次尝试添加 FluentValidation 版本 5 0 0 1 我创建了继承自 ValidatorFactoryBas
  • 为什么使用引用限定符 & 声明删除的赋值运算符

    据我所知 用户声明的赋值运算符与内置运算符不同 如所解释的这个 stackoverflow 答案 https stackoverflow com a 16995559 3054219 但是为什么要在已删除的运算符中添加 呢 C class