C++指针和对象实例化

Pet*_*ter 1 c++ pointers object instantiation new-operator

这有效:

MyObject *o;
o = new MyObject();
Run Code Online (Sandbox Code Playgroud)

而这不是:

MyObject o = new MyObject();
Run Code Online (Sandbox Code Playgroud)

为什么?

And*_*nck 5

因为它们不是等价的。尝试:

 MyObject* o = new MyObject();
Run Code Online (Sandbox Code Playgroud)


MPe*_*ier 5

关键字new 返回一个指针.必须将其分配给对象的指针.

这也有效:

MyObject o = MyObject();
Run Code Online (Sandbox Code Playgroud)

编辑:

正如Seth评论的那样,上述内容相当于:

MyObject o;
Run Code Online (Sandbox Code Playgroud)

如果没有给出构造函数,则调用默认构造函数(即没有参数).

  • 或者`MyObject o;` (5认同)
  • 引用尤达:"你必须忘掉你学到的东西." ;) (5认同)
  • @AndreasBrinck在C++中我们把它改成"你必须'删除'你所谓的'新'" (3认同)