为什么赋值运算符应该返回对象的引用?

2023-12-14

我正在对 C++ 进行一些修改,并且目前正在处理运算符重载,特别是“=”(赋值)运算符。我在网上查找并发现了多个讨论该问题的主题。在我自己的笔记中,我把所有的例子都记下来了,比如

class Foo
{
    public:  
        int x;  
        int y;  
        void operator=(const Foo&);  
};  
void Foo::operator=(const Foo &rhs)
{
    x = rhs.x;  
    y = rhs.y;  
}

在我在线找到的所有引用中,我注意到该运算符返回对源对象的引用。 为什么返回对象引用的正确方法是返回对象的引用而不是什么都不返回?


通常的形式返回对目标对象的引用以允许赋值链接。否则,将无法执行以下操作:

Foo a, b, c;
// ...
a = b = c;

不过,请记住,正确使用赋值运算符比看起来更难.

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

为什么赋值运算符应该返回对象的引用? 的相关文章

随机推荐

  • 我可以使用 MySQL Connector/J 执行以分号分隔的多个查询吗? [复制]

    这个问题在这里已经有答案了 我的 mysql db jdbc 驱动程序版本为 5 1 25 我想像这样执行sql查询 statement execute select fullName from user where user id 1 s
  • 如何更改 WooCommerce 中 S 的评论评级?

    如何将 WooCommerce 中的评论评级图像从当前的 S 更改为实际的星级图像 经过一番谷歌搜索后 我尝试了以下方法 将主题评级替换为 WooCommerce 星级但这不起作用 它只是将 S 更改为小方框 当前CSS woocommer
  • 使用 R 按组计算累积标准差

    我对 R 还很陌生 想要计算 R 中各组的累积标准差 我有一个数据框 D 其中包含访客 ID 以及每个页面所花费的相应页面 顶部 时间 如下所示 ID top v1 2 3 v1 4 8 v1 10 2 v2 16 2 v2 12 2 v2
  • 使用 Windows 身份验证登录 SQL Azure

    是否可以将 SQL Azure 服务器或数据库加入域 以便我们可以使用 Windows 身份验证从 Active Directory 登录 Microsoft 最近宣布支持 Azure SQL DB 的 AAD 身份验证 查看文档页面和下面
  • 两个类可以互相成为对方的数据成员吗?

    是否有可能 A 类成为另一个 B 类的字段 同时 B 类成为 A 类的字段 我有一个场景 其中有两个类 比赛和场地 我不确定是否将 Venue 作为 Match 的数据成员 或者反过来 或者将它们作为另一个的数据成员 如果 Java 允许的
  • NxN 棋盘的 TicTacToe 获胜逻辑

    当前逻辑在 3x3 板上工作良好 因为它是静态的 如何将其转换为NxN逻辑 获胜逻辑通过添加行和列方块来工作 To determine a win condition each square is tagged from left to r
  • 使用 Google Drive api 文件列表时,在父级中使用“root”时,根目录下不会显示文件夹

    当我在Q中的parents中设置 root 时 我只想查看根目录下的文件夹和文件 但我只能看到一个标题为 入门 的pdf文件 我用的是C 代码 我的文件夹在哪里 但是当我在代码中按名称 例如 name Folder1 搜索时 我可以看到文件
  • 在 D3 中更改每个堆积条形图的颜色为不同颜色

    这涉及到为堆叠条形图的每个条形分配不同的颜色 因为目前所有四个条形图中只有单一颜色 并且堆叠条形图中的颜色正在变化 但我也尝试为所有四个条形分配不同的颜色堆叠值 这是代码 var margin top 20 right 160 bottom
  • 通过服务帐户和 OAuth2 向 Google Drive 进行身份验证时出现 401 响应

    我试图让 Java 应用程序访问存储在我的 GoogleDrive 文件夹中的文件列表时似乎遇到了困难 这 我在开发者控制台中有一个项目设置 我已经为该项目启用了 Drive API 我已经为服务帐户创建了身份验证凭据 并且正在使用生成的
  • 如何在按钮单击事件上从 DataGridView 填充文本框

    我想从 DataGridView 控件填充按钮单击事件的数据 我的代码是这样的 for int i 0 i lt dgv EmpAttList Columns Count i txt EnrollNo Text this dgv EmpAt
  • 在 R 中转换 data.frame

    我有以下数据框 foo lt data frame abs cbind rnorm 3 rnorm 3 mean 8 rnorm 3 mean 9 rnorm 3 mean 1 colnames foo lt c w x y z rowna
  • 返回双精度数组的导出函数

    在 Golang 中如何导出返回双精度数组的函数 以前可能的方式现在似乎返回 运行时错误 cgo 结果有 Go 指针 export Init func Init filename string C int unsafe Pointer va
  • indexOf 区分大小写吗?

    indexOf String 方法区分大小写吗 如果是这样 是否有不区分大小写的版本 The indexOf 方法均区分大小写 您可以通过预先将字符串转换为大写 小写来使它们 粗略地 以一种破坏的方式 但适用于很多情况 不区分大小写 s1
  • 递归代替多个嵌套的 for 循环?

    我在尝试更新嵌套 for 循环以使用递归时遇到一些问题 使用递归时是否可以从早期的 for 循环访问 a b 和 c 变量 下面是我尝试将其转换为递归调用的简单示例 for int a 0 a lt 10 a for int b 0 b l
  • 防止Fragment的restoreViewState()

    我有一个对象Foo可以使用片段进行配置 FooFragment Foo 类包含对 FooFragment 的静态引用和方法公共片段 getConfigurationFragment 此方法将当前对象分配给 FooFragment 并返回它
  • 处理导航栏按钮事件时应用程序崩溃

    在我的应用程序中 我有一个导航栏按钮 允许用户弹回到导航堆栈的顶部 这已经存在了一段时间并且一直运行良好 但是 当我使用 MT 4 0 构建时 它崩溃了 in constructor UIButton btn UIButton FromTy
  • 在 WPF 应用程序中显示 PDF [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 关于如何在 WPF Windows 应用程序中显示 PDF 文件有什么想法吗 我正在使用以下代码来运行浏览器 但是Browser Navigate方法没有做任何事情 WebBrows
  • 我需要在 HTML 中转义什么(JSON 响应)

    我的 JSON 响应如下所示 rc 200 test user div class sub1 div class avatar a href blah blah a br strong 0 strong div div class sl p
  • 使用 C# 比较 SQL Server 中的两个日期时间值

    我想知道如何比较两个日期时间值 一个是从 sql 数据库检索的 另一个是用 c 获取的当前日期时间值 Beware when comparing DateTimes generated within C The DateTime struc
  • 为什么赋值运算符应该返回对象的引用?

    我正在对 C 进行一些修改 并且目前正在处理运算符重载 特别是 赋值 运算符 我在网上查找并发现了多个讨论该问题的主题 在我自己的笔记中 我把所有的例子都记下来了 比如 class Foo public int x int y void o