指针分配与正常声明

Ant*_*ony 4 c++ pointers allocation

有时我在各种C++程序中看到,声明和使用的对象如下:

object *obj = new object;
obj->action();
obj->moreAction();
//etc...
Run Code Online (Sandbox Code Playgroud)

这样做有什么好处,而不是简单地做:

object obj;
obj.action();
obj.moreAction();
//etc
Run Code Online (Sandbox Code Playgroud)

sha*_*oth 5

是 - 您可以将指针存储在容器中或从函数返回它,当指针超出范围时,对象不会被销毁.使用指针

  • 避免不必要的对象复制,
  • 方便可选的对象创建,
  • 用于自定义对象生存期管理
  • 用于创建复杂的图形结构,
  • 对于上述的组合.

这不是免费的 - 你需要手动销毁对象(delete),当你不再需要它时,决定何时到来并不总是那么容易,加上你可能忘记编码.