A*a =新A(); 这会创建指针还是对象?

Chi*_*moy 21 c++

A *a = new A();
Run Code Online (Sandbox Code Playgroud)

这会创建指针还是对象?

我是一名c ++初学者,所以我想了解这种差异.

Pau*_*aul 44

两者:你创建了一个A(一个对象)的新实例,并创建了一个指向它的指针a.

您可以将其分为两个语句:

A *a;        // Declare `a` of type: pointer to `A`

a = new A(); // create a new instance of `A` and
             // assign the resulting pointer to `a`
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 15

这会A在堆上创建一个类型的对象,并存储一个指向它的指针a(存储在堆栈中).

PS delete a当你完成它时不要忘记打电话,这样就A可以将其破坏并将其内存返回堆中.更好的是,变成a智能指针.

  • 更像是不要忘记使用智能指针而不是担心安全地删除它. (7认同)

sta*_*ust 11

它创造了两者.
A*在堆栈上创建类型对象,A在堆上创建类型对象.

相当于

A *a;
a = new A();
Run Code Online (Sandbox Code Playgroud)