为什么在 C++ 函数中可以返回对象引用?

2024-01-10

这是网站上的示例:http://www.cplusplus.com/doc/tutorial/classes2/ http://www.cplusplus.com/doc/tutorial/classes2/我知道这是一个有效的例子。但是,我不明白为什么可以从operator+重载函数返回对象temp。除了代码之外我还做了一些评论。

// vectors: overloading operators example
#include <iostream>
using namespace std;

class CVector {
  public:
    int x,y;
    CVector () {};
    CVector (int,int);
    CVector operator + (CVector);
};

CVector::CVector (int a, int b) {
  x = a;
  y = b;
}

CVector CVector::operator+ (CVector param) {
  CVector temp;
  temp.x = x + param.x;
  temp.y = y + param.y;
  return (temp);   ***// Isn't object temp be destroyed after this function exits ?***
}

int main () {
  CVector a (3,1);
  CVector b (1,2);
  CVector c;
  c = a + b; ***// If object temp is destroyed, why does this assignment still work?***
  cout << c.x << "," << c.y;
  return 0;
}

在您的示例中,您不返回对象引用,而只是按值返回对象。

事实上,对象 temp 在函数退出后被销毁,但此时它的值已复制到堆栈上。

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

为什么在 C++ 函数中可以返回对象引用? 的相关文章

随机推荐

  • 将每个整数转换为简单的 ASCII 图表

    我有一个包含一堆整数的文件 如下所示 6 2 3 4 3 目标是像视频游戏一样转换统计数据中的这些整数 例如 如果数字是 6 则统计数据必须是 如果数字是 4 结果一定是 我尝试了以下代码 但它不起作用 Here I put all the
  • 使用多个 SASS 文件

    我想将我的 巨大的 全局 css 文件分成多个文件 我用的是萨斯有没有一种简单的方法让 sass 观看多个文件 我想我可以使用 import 但只是想知道是否有另一种 更好 的方法 提前致谢 What 里奇 布拉德肖提到的是正确的 但是这是
  • 检测泛型类型是否开放?

    我的程序集中有一堆常规的 封闭的和开放的类型 我有一个查询 我试图从中排除开放类型 class Foo a regular type class Bar
  • 使用数据绑定设置 ImageView 的色调

    我使用数据绑定来设置我的色调ImageView 这运作良好 android tint plantEntity isFavorite color favorite color favorite none gt 问题是android tint已
  • 如何处理 Pandas Dataframe 中的重复条目?

    我有一个包含以下条目的 df ID FIRST NAME FIRST SUBJECT SECOND SUBJECT A2035559 Sometsdf Science A2035559 Sometsdf ENGINEERING A20340
  • 使用数据帧减去字典中列表的值

    我下面有一个数据框 其中包含用户购买的产品 数据集 user age maritalstatus product A Young married 111 B young married 222 C young Single 111 D ol
  • exec() 命令不起作用

    我正在使用 exec 函数在 centos 服务器上运行我的命令 一切正常 直到我使用命令 命令 ffmpeg i 输入视频 mp4 vf fade out 0 5 输出 mp4 该命令正常 因为它通过命令行在服务器上运行 但是当我使用 p
  • Three.js 合并网格但保留单独的材质

    我正在开发一个基于网络服务器的可视化项目 我让它工作并查看我想要的方式 但它比我希望的要慢得多 基本上 它有一个巨大的网格来建模空间 然后各个立方体以不同的颜色显示在网格中 或者如果那里没有任何东西 则当前将其删除 但可以轻松地使用透明材料
  • Rails 4.0.0 - “没有将 nil 隐式转换为字符串”

    刚刚安装了一个全新的 Rails 4 0 0 应用程序 我收到此错误 https gist github com hartator 6404820 https gist github com hartator 6404820 on http
  • 转换 Html 并将文本设置为 Textview

    我正在尝试转换 html 字符串并将其设置为 TextView 但我无法准确执行此操作 这是我的字符串 您好 1 s 您有 2 d条新消息 我在用textview setText Html fromHtml myString 这会生成带有
  • Windows下如何知道复制是否完成?

    我正在编写一个监听位置的工具 最好是远程位置 如果创建了新的文件夹或文件 它会将其下载到本地位置 目前我正在监听远程文件夹FileSystemWatcher 当创建新文件夹 文件时 我启动一个计时器 如果计时器达到 X 分钟 它就会开始将其
  • UIAlertcontroller 作为 Swift 中的操作

    所以我希望弹出一个警报 告诉我一条消息 然后我希望它等待我 直到我按 确定 然后它将继续执行该功能 例如 IBAction Alert let alertController UIAlertController title title me
  • 在 Windows 上托管闪亮的应用程序

    首先我的问题与 如何在 Windows 服务器上托管 Shiny 应用程序 https stackoverflow com questions 46848995 how to host shiny apps on windows serve
  • nslog时间戳

    我想记录设备运动时间戳属性 设备运动位于 CMMotionManager devicemotion timestamp 类中 有任何想法吗 这是我提出的解决方案 因为日期是根据 Apple 文档确定的 时间戳是自电话启动以来的时间量 以秒为
  • 禁用文本选择 UITextView

    我想禁用 UITextView 上的文本选择 到现在为止我所拥有的 已经完成的是 BOOL canPerformAction SEL action withSender id sender UIMenuController sharedMe
  • 错误:boost/scoped_ptr.hpp:使用 libkml 时没有此类文件或目录

    我正在开发一个使用谷歌地图数据库的软件 我搜索了 google 发现一个 C 库可以做到这一点 libkml 我已经下载了一些示例代码website http code google com p libkml source browse t
  • Git Bash shell 无法创建符号链接

    当我尝试从以下位置创建符号链接时Git Bash https superuser com questions 1053633 what is git bash for windows anywayshell 每次都失败 ln s c Use
  • iOS – UILocalNotification 对同一个通知触发了两次

    如果我安排两个UILocalNotifications 并将它们设置为在完全相同的 fireDate 处触发 然后在设备上 这不是模拟器的bug 上的fireDateapplication didReceiveLocalNotificati
  • 无法更新 git 存储库:“sign_and_send_pubkey:不支持相互签名”

    我正在使用 git 存储库 并使用 ssh 密钥与其连接 直到今天都运行良好 我正在执行拉取操作 并收到以下 ssh 错误 sign and send pubkey no mutual signature supported 然后它会要求输
  • 为什么在 C++ 函数中可以返回对象引用?

    这是网站上的示例 http www cplusplus com doc tutorial classes2 http www cplusplus com doc tutorial classes2 我知道这是一个有效的例子 但是 我不明白为