相关疑难解决方法(0)

为什么析构函数不是从函数中调用返回的对象?

我想当一个函数将堆栈中的对象返回给调用函数时,调用函数会获取原始对象的副本,但是一旦堆栈展开就会调用原始对象的析构函数.但是在下面的程序中,析构函数只被调用一次.我预计它会被调用两次.

#include <iostream>

class MyClass
{
public:
  ~MyClass() { std::cout << "destructor of MyClass" << std::endl; }
};

MyClass getMyClass()
{
  MyClass obj = MyClass();
  return obj;   // dtor call for obj here?
}

int main()
{
  MyClass myobj = getMyClass();
  return 0;  // Another dtor call for myobj.
}
Run Code Online (Sandbox Code Playgroud)

但"MyClass的析构函数"只打印一次.我的假设是错的还是还有其他事情发生在这里?

c++ destructor memory-management

18
推荐指数
1
解决办法
2672
查看次数

标签 统计

c++ ×1

destructor ×1

memory-management ×1