在C++中,有与smartpointer等效的代码编写此代码?

在External.cpp中:

class ExampleClass {...};

ExampleClass* function()
{
  ExampleClass *ptr = new ExampleClass();
  ptr->doSomething();
  return ptr;
}

在Another.cpp中,我想正确地做这样的事情,怎么做?
ExampleClass *ptr2 = function();

最佳答案

实际上有两个,您可以使用unique_ptr或shared_ptr,请看这里何时使用:Which kind of pointer do I use when?

如果您选择unique_ptr,那么您会得到:

class ExampleClass {...};

std::unique_ptr<ExampleClass> function()
{
  std::unique_ptr<ExampleClass> uptr = std::make_unique<ExampleClass>();
  uptr->doSomething();
  return std::move(uptr);
}

//In Another.cpp
std::unique_ptr<ExampleClass> ptr2 = function();
//you could even store the result in a shared pointer!!
std::shared_ptr<ExampleClass> ptr3 = function();

关于c++ - 相当于Smartpointers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45541142/

10-12 18:54