据我所知,如果我想创建一个在堆栈上分配内存的c ++对象,我必须使用关键字new,因此返回指向堆上创建的对象的指针。 有没有办法在堆上创建一个对象,并直接访问它,而不使用指针?
答案 0 :(得分:2)
有没有办法在堆上创建一个对象,并直接访问它而不使用指针?
让我们首先说C ++标准没有 heap 和 stack 的概念,因为C ++可以在没有堆。所以,从现在开始,我只是假设你的意思是动态分配内存。
您可以使用new
(以及类似的C函数)来避免使用malloc
动态分配内存,但我不建议这样做,特别是因为您仍然会使用指针。
另一种方法是使用std::unique_ptr
和std::make_unique
并生成动态分配的资源,并绑定对它的引用:
auto ptr = std::make_unique(...);
auto& ref = *ptr;
然后您将能够避免使用指针语义。但实际上:只需使用std::unique_ptr
并完成它。