new 演算子のオーバーロード

提供: RAD Studio
移動先: 案内検索

new および delete 演算子:インデックス への移動


グローバルな ::new() 演算子と ::new[]() 演算子はオーバーロードできます。オーバーロードされるインスタンスはユニークでなければなりません。このため,グローバルな割り当て演算子の複数のインスタンスが 1 つのプログラムに存在できます。

クラス固有のメモリ割り当て演算子もオーバーロードできます。new 演算子は,未使用の記憶域(ヒープ)管理ルーチンを提供するか,追加の引数を指定することで実現できます。ユーザー定義の演算子 newvoid* を返さなければならず,最初の引数として 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 に置き換えられます。

関連項目