Possible duplicate
Proper stack and heap usage in C++?
我开始从 Java 背景学习 C++,一个很大的不同是我不再被迫:
- 为对象动态分配内存
- 总是使用指针来处理对象
Java 中也是如此。但我对什么时候应该做什么感到困惑 - 你能给我建议吗?
目前我很想开始做所有类似 Java 风格的事情
Thing *thing = new Thing();
thing->whatever();
// etc etc
最佳答案
除非您知道为什么需要指针,否则不要使用指针。如果您只需要一个对象一段时间,请在堆栈上分配它:
Object object;
object.Method();
如果您需要将对象传递给函数,请使用引用:
int doStuff( Object& object )
{
object.Method();
return 0;
}
只在需要时才使用指针
- 类似图形的复杂数据结构或
- 不同对象类型的数组或
- 从函数返回新创建的对象或
- 在您有时需要指定“没有对象”的情况下 - 然后您使用空指针。
如果您使用指针,则需要在不再需要这些对象时以及在指向该对象的最后一个指针变得不可访问之前释放这些对象,因为 C++ 没有内置的垃圾回收机制。为了简化这一点,使用智能指针行 std::auto_ptr 或 boost::shared_ptr。
关于java - 我应该如何选择在 C++ 中存储对象的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399532/