我可以在不使用“new”(和隐式指针)的情况下在C ++中创建在堆上分配的对象吗?

时间:2014-03-22 19:12:49

标签: c++ pointers object heap-memory

据我所知,如果我想创建一个在堆栈上分配内存的c ++对象,我必须使用关键字new,因此返回指向堆上创建的对象的指针。    有没有办法在堆上创建一个对象,并直接访问它,而不使用指针?

1 个答案:

答案 0 :(得分:2)

  

有没有办法在堆上创建一个对象,并直接访问它而不使用指针?

让我们首先说C ++标准没有 heap stack 的概念,因为C ++可以在没有。所以,从现在开始,我只是假设你的意思是动态分配内存。

您可以使用new(以及类似的C函数)来避免使用malloc动态分配内存,但我不建议这样做,特别是因为您仍然会使用指针。

另一种方法是使用std::unique_ptrstd::make_unique并生成动态分配的资源,并绑定对它的引用:

auto ptr = std::make_unique(...);
auto& ref = *ptr;

然后您将能够避免使用指针语义。但实际上:只需使用std::unique_ptr并完成它。