new 演算子のオーバーロード
new および delete 演算子:インデックス への移動
グローバルな ::new() 演算子と ::new[]() 演算子はオーバーロードできます。オーバーロードされるインスタンスはユニークでなければなりません。このため,グローバルな割り当て演算子の複数のインスタンスが 1 つのプログラムに存在できます。
クラス固有のメモリ割り当て演算子もオーバーロードできます。new 演算子は,未使用の記憶域(ヒープ)管理ルーチンを提供するか,追加の引数を指定することで実現できます。ユーザー定義の演算子 new は void* を返さなければならず,最初の引数として size_t をとらなければなりません。new 演算子をオーバーロードするには,ヘッダーファイル new.h に宣言されている以下のプロトタイプを使います。
- void * operator new(size_t Type_size); // 非配列
- void * operator new[](size_t Type_size); // 配列
のコンパイラは,Type_size を new 演算子に渡します。関数名(ただし,関数へのポインタは許される),クラス宣言,列挙型宣言,const,および volatile 以外であれば,どんなデータ型でも Type_size に置き換えられます。