我开始从 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/

    10-14 12:46
    查看更多