java - 我应该如何选择在 C++ 中存储对象的位置?

标签 java c++

Possible duplicate
Proper stack and heap usage in C++?

我开始从 Java 背景学习 C++,一个很大的不同是我不再被迫:

  1. 为对象动态分配内存
  2. 总是使用指针来处理对象

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/

相关文章:

java - AWS Java Lambda 局部变量与对象变量

java - 将此字段添加到此实体的正确方法是什么?

java - 仅当我使用 jlink 组装应用程序后运行应用程序时,Flyway 才无法在类路径中找到迁移

c++ - 使用算术符号来遍历字符串

C++ 如何保护自己不受 stdio.h 宏的影响

java - Spring boot 1.5.2 未部署在 Openshift Tomcat 7(JBoss EWS 2.0) 中

JavaFX 如何保存 TableView 的状态

c++ - 递归和常量变量

c++ - 当保护保护太多

java - 如何使用 NetBeans 包含的所有库依赖项构建可执行文件?