new 演算子(C++)
new 演算子および delete 演算子:インデックス への移動
デフォルトでは、new 演算子のオーバーロード バージョンが存在しない場合は、動的メモリ割り当ての要求があると、常にグローバル バージョンの new(::operator new())が使われます。配列割り当ての要求があると、::operator new[]() が呼び出されます。型名のクラス オブジェクトと一緒に、::operator new() または ::operator new[]() という名前の特殊な演算子を定義できます。new がクラス名オブジェクトに適用されると、適切な名前の ::operator new が存在する場合は、それが呼び出されます。存在しない場合は、グローバルの ::operator new が使われます。
オプションの初期化を受け付けるのは、operator new() 関数だけです。配列割り当てバージョンの operator new[]() は、初期化を受け付けません。明示的な初期化が存在しない場合は、new で作成されたオブジェクトには、予測できないデータ(ゴミ)が含まれます。new で割り当てられたオブジェクト(配列以外)は、次のように、括弧で囲まれた適切な式を利用して初期化できます。
int_ptr = new int(3);
コンストラクタを持つクラスの配列は、デフォルトのコンストラクタを使用して初期化されます。カスタマイズされた初期化処理を含むユーザー定義の new 演算子は、クラス型オブジェクトの C++ コンストラクタ内で重要な役割を果たします。