21
A *a = new A();

これはポインタまたはオブジェクトを作成しますか?

私はC++の初心者なので、この違いを理解したいです。

4

7 に答える 7

44

A両方: (オブジェクト)の新しいインスタンスを作成し、それへのポインタを作成しましたa

次の 2 つのステートメントに分けることができます。

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`
于 2013-04-20T06:17:57.063 に答える
15

Aこれにより、ヒープに型のオブジェクトが作成され、そのオブジェクトへのポインターaが格納されます (スタックに格納されます)。

PSそれを使い終わったら呼び出すことを忘れないでくださいdelete a。そうすれば、それをA破棄してそのメモリをヒープに戻すことができます。aさらに良いことに、スマート ポインターに変わります。

于 2013-04-20T06:17:36.993 に答える
11

両方を作成します。スタック
にタイプのオブジェクトを作成し、ヒープにタイプのオブジェクトを作成します。 A*A

に相当

A *a;
a = new A();
于 2013-04-20T06:19:41.830 に答える
1

両方を作成します。

最初にタイプ A のオブジェクトを作成し、次にそれへのポインターを格納します。

ポインターの詳細については、こちらをご覧ください。

于 2013-04-20T08:41:09.287 に答える