gpt4 book ai didi

c++ - 按值 : Is my hypothesis correct? 分配成员对象

转载 作者:行者123 更新时间:2023-11-30 02:45:48 24 4
gpt4 key购买 nike

我有多年的编程经验,但我对 C++ 还很陌生。我不完全明白下面一行会做什么:

this -> obj = MyObject(param)

首先,我有以下假设会发生什么:

  • 调用 MyObject(param) 时,会在堆栈上创建该对象的本地版本。
  • 这个对象也被复制到this -> obj。
  • 当程序离开当前范围(即该行所在的方法)时,将调用该对象的本地版本的析构函数。

这是正确的吗?

第二:创建this时,obj由默认构造函数创建。这个对象的析构函数什么时候被调用?我假设,它发生在被上面的行覆盖之前,但我的调试输出表明它发生在它被销毁时。

最佳答案

  1. 你最后的假设是错误的。临时(你称之为本地)将在语句结束后立即销毁。

  2. this -> obj = MyObject(param); 行中,obj 赋予了新的对象>赋值运算符(有效地覆盖成员)。但是覆盖并不意味着破坏(并且在理智的赋值运算符函数中不会调用析构函数)。 obj 将在 this (父级)被销毁时被销毁(尽管如果它是指向某物的指针,您可以通过调用 delete 显式销毁它它)。

关于c++ - 按值 : Is my hypothesis correct? 分配成员对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24161273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com