AnT*_*AnT 20

使用动态存储的原因包括(但可能不限于)

  1. 手动控制对象的生命周期 - 对象将一直存在,直到您明确销毁它为止
  2. 当最终数量的对象仅在运行时知道时(如树中的节点数或数组中的元素数),可以根据需要创建任意数量的对象.
  3. 对象类型的运行时控件(类似于多态对象的实际类型).

如果没有区别,最好使用您的t3方法创建对象.除非必须,否则不要使用动态内存.但有时你真的必须(见上面的原因).


Eva*_*ran 7

如果你需要一个对象比它创建的范围更长,那么其中一个解决方案就是在堆上创建它.在这种情况下,您需要一个指针.还有其他原因,这是最常见的.

使用指针的另一个原因是"out"参数.当然,你可以使用引用,但许多人更喜欢使用指针,因为它避免了在调用站点修改参数.foo(var);VSfoo(&var);

此外,指针可用于传递或返回可能存在或不存在的对象.例如:T *foo(); // returns a pointer to an object or NULL if none exists.

这个清单一直在继续.