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

原文 标签 java c++

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。

    相关文章:

    c++ - Mac : Terminal Compiler Error on Server

    c++ - SIMD和动态内存分配

    java - JPA:左联接在where子句中不适用于“is null”

    java - java.lang.NumberFormatException:从oracle db生成发票编号时java中的null错误

    java - JUnit测试返回null和false

    c++ - 无法在Matlab UNIX上打开串行端口

    c++ - 如何在ROS中使用PCL可视化kinect数据的表面法线?

    c++ - C++:重写公共(public)\私有(private)继承

    java - 将实例化对象添加到ArrayList的最佳方法是什么

    java - 使用maven打包Java代码时出现类,接口(interface)或枚举预期的错误