T *t = new T;
// ^^^^^
t
これはtypeの宣言ですT*
。の後の式で初期化されています=
。new T
部分全体が、この初期化子のnew-expressionです。
new-expressionにより、型のオブジェクトにメモリが割り当てられ、そのT
オブジェクトがその空間に構築されます。new-expressionは、そのオブジェクトへのポインターを返します。つまり、new-expressionが評価された後、行は次のようになります。
T *t = returned_pointer;
メモリアドレスの例として使用していると思います0x0FF00
-その場合、行が次のようになったと想像できます。
T *t = 0x0FF00; // Note: this wouldn't actually compile because 0x0FF00 is an integer literal
ポインタt
は、そのメモリ アドレスで初期化されます。
new-expressionが正確に何をするのか混乱するかもしれません。次の 2 つの手順があります。
適切な割り当て関数 (通常はoperator new
) を呼び出し、タイプ のオブジェクトを格納するために必要なメモリのサイズを渡しますT
。operator new
そのメモリを割り当て、その場所を指すアドレスを返します。
T
次に、その空間で型のオブジェクトを初期化します。