在C++中,关于对象创建,隐式使用了新的吗?

h4c*_*k3d 6 c++ oop

当我创建一个类的对象时,比方说,

class A {
  public: A() {}
};

A a;
Run Code Online (Sandbox Code Playgroud)

只是构造函数被调用?或new隐含使用运算符?

就像我们必须做的那样 A* b = new A();

此外,将在哪里存储ab存储在内存中?堆栈还是堆?

Som*_*ude 8

在第一种情况下,如果a不是全局变量,那么它将被放在堆栈上,而b将被放在堆上.

在第一种情况下,只调用构造函数.new永远不会被调用,除非你在第二种情况下明确地这样做.


mat*_*975 6

没有new不隐式调用.new返回指向所创建对象类型的指针,而构造函数调用没有返回类型.创建的对象new将存在于堆上.New将分配内存,然后调用构造函数.在表单中创建的对象A a将存在于堆栈中(除非它们是全局变量).