Advertisement

简述C/C++中return *this与return this的差异

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文章探讨了在C++编程语言中使用`return *this`和`return this`时的区别。通过对比分析,解释了引用返回和指针返回的不同应用场景及其带来的效率和语义上的区别。 首先我们知道,在类`Test`的构造函数中有这样的实现: ```cpp class Test { public: Test() { return this; } // 返回的是当前对象的地址 Test& operator= (const Test &other) { return *this; } // 返回的是当前对象本身 private: //... }; ``` 其中,`return *this`返回的是当前对象的克隆或其自身。具体来说: - 如果返回类型为 `Test`(即拷贝构造函数),则会创建一个副本。 - 如果返回类型为 `Test&`(如赋值操作符重载的情况),则是指代当前对象本身。 而`return this`是用于直接返回指向当前对象的地址,也就是该对象在内存中的位置。再来看一下关于“返回拷贝”的情况: ```cpp #include //... ``` 这里提到的是当构造函数或赋值操作符重载中使用了 `*this` 或者只是简单地使用 `this` 来指代当前类实例时,它们的含义和作用。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • C/C++return *thisreturn this
    优质
    本文章探讨了在C++编程语言中使用`return *this`和`return this`时的区别。通过对比分析,解释了引用返回和指针返回的不同应用场景及其带来的效率和语义上的区别。 首先我们知道,在类`Test`的构造函数中有这样的实现: ```cpp class Test { public: Test() { return this; } // 返回的是当前对象的地址 Test& operator= (const Test &other) { return *this; } // 返回的是当前对象本身 private: //... }; ``` 其中,`return *this`返回的是当前对象的克隆或其自身。具体来说: - 如果返回类型为 `Test`(即拷贝构造函数),则会创建一个副本。 - 如果返回类型为 `Test&`(如赋值操作符重载的情况),则是指代当前对象本身。 而`return this`是用于直接返回指向当前对象的地址,也就是该对象在内存中的位置。再来看一下关于“返回拷贝”的情况: ```cpp #include //... ``` 这里提到的是当构造函数或赋值操作符重载中使用了 `*this` 或者只是简单地使用 `this` 来指代当前类实例时,它们的含义和作用。
  • JavaScriptreturnreturn true和return false用法及
    优质
    本文详细解析了在JavaScript编程语言中,`return`语句的不同使用方式及其效果,包括简单的返回、返回布尔值真和假的区别,并探讨其应用场景。 1. 语法及返回方式 ① 返回控制与函数结果:语法为 `return 表达式;` ,这表示执行语句后会将表达式的值作为函数的结果返回给调用者。 ② 返回控制无函数结果:语法为 `return;` 。在大多数情况下,特别是在事件处理函数中使用时,如果让其返回 false 可以防止默认的事件行为。例如,默认情况下点击一个 `` 标签元素会跳转到该元素 href 属性指定的页面。而 return false 相当于终止符,return true 则相当于执行符。 在 JavaScript 中 `return false` 的作用一般是用来取消默认动作的。比如你单击一个链接除了触发你的“on”事件处理程序外,默认情况下还会跳转到该元素 href 属性指定的目标页面,但使用 return false 可以阻止这种行为发生。
  • C++exit(), _exit(), return, abort()函数
    优质
    本文探讨了C++编程语言中的几种程序终止方式,包括exit(), _exit(), return和abort()函数,并详细分析它们之间的区别与应用场景。 exit()函数与_exit()函数及return关键字的区别在于: exit()和_exit()都可以用于结束进程,但它们的工作方式不同。使用_exit()之后会立即进入内核空间而不会执行任何清理操作;相反,exit()会在调用终止处理程序、关闭所有I/O流等必要步骤后才会使进程退出。 建议直接查看Linux终端中的man手册以获取最准确的信息,因为这是官方文档且不会有错误出现。以下是关于这两个函数的示例代码: ```c #include void _exit(int status); #include void exit(int status); ``` 请注意,这里的`_Exit(i)`似乎是一个不完整的或有误的写法,并未在C标准库中找到相应的定义或使用方式。正确的用法应该是`_exit()`和`exit()`.
  • C语言return和exit用法区别
    优质
    本文简要介绍了C语言编程中的两个终止程序执行的关键函数——`return`与`exit()`的区别及其应用场景。 1. 函数`exit()`用于在程序运行过程中随时结束程序,并且其参数会返回给操作系统(OS)。当主函数(main)执行完毕后也会隐式调用`exit()`函数。使用`exit()`时,首先它会执行之前通过`atexit()`注册的所有清理函数,随后进行自身的资源清理工作,包括刷新所有输出流、关闭已打开的文件以及删除由标准I/O函数tmpfile()创建的临时文件。与返回值并退出当前函数不同的是,`exit()`是终止整个进程,并且会释放该进程中占用的所有内存空间。 2. `return`属于编程语言层面的操作,它表示从调用堆栈中弹出;而`exit()`则是系统级别的操作,意味着一个程序或进程的完全结束。 3. 调用`exit()`函数将终止应用程序运行,并返回一个状态值给操作系统。
  • Pythonprintreturn功能及其解析
    优质
    本文深入探讨了Python编程语言中的两个关键字——`print`和`return`。通过详细比较它们的功能、使用场景及区别,帮助读者更好地掌握函数设计的基本原则。 `print` 语句用于向用户显示一个字符串,以便让用户了解计算机内部正在进行的操作。然而,计算机本身无法使用通过 `print` 输出的信息。 另一方面,`return` 是函数返回值的关键方式。虽然这些返回值通常对人类不可见,但它们可以被其他程序功能所利用。例如,函数的返回值可以在另一个函数中作为参数传递、存储为变量等用途。 值得注意的是,`print` 语句不会影响函数的行为;它的主要作用是帮助开发者理解代码的工作原理,并在调试过程中查看不同位置的数据而无需中断程序运行。“print”除了让人类用户看到他们想要的结果之外没有其他功能。另一方面,“return” 是所有函数返回值的主要方式。即使一个函数中没有任何 `return` 语句,它也会默认返回 None 值。
  • C语言return用法
    优质
    本文介绍了C语言中return语句的基本用法及其在函数中的作用机制,帮助读者理解如何使用return来控制程序流程和返回值。 C语言return用法的PPT内容较为详细地总结了return语句的使用方法。
  • C#return不同用法
    优质
    本文介绍了C#编程语言中`return`语句的各种使用方法和应用场景,帮助开发者更好地理解和运用这一关键语法。 C# 中 `return` 语句有多种用法:`return View();` 返回与控制器同名的视图;`return Content(我是一段文本, text/html);` 返回包含指定内容类型的字符串;`return Redirect(http://www.baidu.com/);` 进行 URL 重定向。此外,还有许多其他用法可以探索。
  • C语言return用法
    优质
    本文介绍了C语言中`return`语句的基本概念和使用方法,包括如何从函数中返回值以及不带返回值的函数。通过实例详细说明了其在不同场景下的应用技巧。 详细讲解了return的用法及其各种应用场景。涵盖了所有相关的使用方法。