运算符重载允许使用右值捕获但不能分配给

2024-01-08

是否可以设计以及如何重载operator+为我的班级C使这成为可能:

C&& c = c1 + c2;

但这是不可能的:

c1 + c2 = something;

编辑: 我把物体改成了小写字母。c1, c2 and c是类的对象C. &&不符合逻辑operator&&,而是一个右值引用。

例如写:

double&& d = 1.0 + 2.0;

是 100% 正确的(新的)C++ 代码,而

1.0 + 2.0 = 4.0;

显然是编译器错误。我想exactly相同,但对于我的班级来说是双倍的C.

第二次编辑:如果我的运算符返回 C 或 C&,我可以对右值引用进行赋值,但也可以对 c1 + c2 进行赋值,这是毫无意义的。在这里给出 const 会禁用它,但它也会禁用对右值的分配。至少在 VC++ 2k10 上是这样。那么这有多少倍呢?


让赋值运算符只能在左值上调用:

class C
{
    // ...

public:

    C& operator=(const C&) & = default;
};

请注意右括号后面的单个 & 符号。它阻止分配给右值。

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

运算符重载允许使用右值捕获但不能分配给 的相关文章

随机推荐

  • 使用 HQL 选择集合

    我有以下课程 人 java class Person String name Set
  • 与变量的抽象矩阵乘法

    我知道 python 进行矩阵乘法的能力 不幸的是我不知道如何抽象地做到这一点 所以不与 确定的数字 但带有变量 Example M 1 0 1 d a c 0 1 有没有办法定义a c和d 以便矩阵乘法 给我 1 d a a d c Us
  • 折叠过渡不适用于 Angular 的 UI Bootstrap

    我正在尝试创建一个 div 当单击按钮时它将显示 隐藏 这UI 引导页面 https angular ui github io bootstrap 显示了一个使用 css 过渡的简单示例 这是我的fiddle https jsfiddle
  • 如何反编译在 VS.net 中创建的 .dll 文件

    我需要反编译在 VS net 中创建的 dll 文件 有没有可用的工具来执行此操作 或者我可以有一些代码来做到这一点吗 请帮忙 编辑2 我现在使用来自 Jetbrains 的 DotPeek https www jetbrains com
  • [-f:未找到命令,Bash 脚本文件确实存在[重复]

    这个问题在这里已经有答案了 我正在尝试编写的脚本遇到问题 缩小并简化了代码 它给出了未找到命令的错误 如果我在命令行中执行 test f file 它不会返回任何内容 而不是找不到命令 PATH 1 bin bash DIR 1 if f
  • 在 Tomcat 7 中使用智能卡和 LDAP 对用户进行身份验证

    我有一个在 Tomcat 7 上运行的 Web 应用程序 它配置了自定义 JNDIRealm 并且 web xml 中的登录配置身份验证方法设置为 FORM 我正在尝试找到一种方法来添加通过同一 LDAP 使用智能卡 如果有 对用户进行身份
  • $.getScript 中未定义函数

    这个一定很简单 外部 javascript 文件包含 function Hello alert Hello It is getScript ed 然后调用一个包含的函数 I get ReferenceError Hello 未定义 但是如果
  • 返回 404 错误的 Apache 自定义 404 页面

    我的 apache 404 php 上有一个自定义 404 错误页面 它可以正常工作 但是如果有人或任何搜索引擎请求 404 php页面 服务器返回200 OK 因为该页面确实存在 我已经把Disallow 404 php on my ro
  • 为什么要在自定义计算表达式生成器中使用 Builder.Source()?

    阅读通过F 4 0 规范 http fsharp org specs language spec 我在PDF第79页看到以下内容 辅助功能src e 表示b Source e 如果最里面的 ForEach 来自用户代码而不是由翻译生成 并且
  • 为什么非常量引用不能绑定到临时对象?

    为什么不允许获取对临时对象的非常量引用 哪个函数getx 回报 显然 这是 C 标准所禁止的 但我对这种限制的目的感兴趣 不是参考达到标准 struct X X ref return this X getx return X void g
  • 使用 .Rmd 文件中的knitr 有条件地评估航向

    是否可以有条件地评估代码块and使用 R Markdown 的相关标题和knitr 例如 如果eval cell is TRUE包括块and它的标题 但不包括 ifeval cell is FALSE r eval cell TRUE He
  • 从视频重建 3D 轨迹(由单个摄像机拍摄)

    我目前正在尝试根据 iPhone 视频中拍摄的一系列图像重建球或岩石等下落物体的 3D 轨迹 我应该从哪里开始寻找 我知道我必须校准相机 我想我会使用 Jean Yves Bouguet 的 matlab 校准工具箱 然后从相同的序列中找到
  • 使用Websocket和Pusher显示连接用户登录状态

    我第一次使用 Pusher 构建聊天室 Web 应用程序 我阅读了很多 Pusher 的文档来了解它是如何工作的 我的问题更多是关于机制而不是代码 所以我想做的是 当用户连接并加入presence channel这使我可以显示谁在线 我想为
  • 管道输出用作 Linux 上 grep 的搜索规范

    如何通过管道将 grep 的输出作为另一个 grep 的搜索模式 举个例子 grep
  • 如何将提交从一个分支复制到另一个分支

    我正在开发两个功能 共享 提交 A B C Feat1 共享 提交 D E F Feat2 问题是 为了测试 Feat2 我确实也需要 Feat1 但我仍然希望它们作为单独的分支 因为它们是不同的 有什么好方法可以对 Feat2 进行更改
  • 如何在 SQL Server 2008 中检索删除的存储过程、函数、表

    我验证了下面的链接 因为有人 Oliver 作为我的问题的重复项发布了 但此查询返回最后执行的脚本 这与我的问题无关 最后执行的特定数据库查询 https stackoverflow com questions 13638435 last
  • 有效地随机化(洗牌)Sql Server 表中的数据

    我有一个表格 其中包含必须随机化的数据 通过随机化 我的意思是使用随机行中的数据来更新同一列中的另一行 问题是表本身很大 超过 2 000 000 行 我写了一段使用 while 循环的代码 但是速度很慢 有人对实现随机化的更有效方法有什么
  • Gson java.text.ParseException:无法解析的日期

    我使用 Gson 反序列化 json 时遇到异常 java text ParseException Unparseable date 2011 10 19T23 30 00 04 00 23 30 00 部分对我来说确实很奇怪 这是无效日期
  • ionic 4 中的(按键)事件未触发

    根据这个链接https ionicframework com docs api input events https ionicframework com docs api input events离子载体keypress事件在浏览器中工作
  • 运算符重载允许使用右值捕获但不能分配给

    是否可以设计以及如何重载operator 为我的班级C使这成为可能 C c c1 c2 但这是不可能的 c1 c2 something 编辑 我把物体改成了小写字母 c1 c2 and c是类的对象C 不符合逻辑operator 而是一个右