Cpp New演算子 新しいページはコチラ
提供: yonewiki
(→new演算子) |
(→new演算子) |
||
46行: | 46行: | ||
もちろんコンストラクタが準備されていなければ、対応した引数を付与しない限りnew演算子による動的な変数の生成処理は失敗します。具体的には個々のクラスや型名の生成方法・コンストラクタに関する仕様書や説明書を参照して下さい。 | もちろんコンストラクタが準備されていなければ、対応した引数を付与しない限りnew演算子による動的な変数の生成処理は失敗します。具体的には個々のクラスや型名の生成方法・コンストラクタに関する仕様書や説明書を参照して下さい。 | ||
− | + | ||
+ | new演算子は、演算子ですから、演算子のオーバロードをすることができます。以下のような関数に独自の機能を追加していけばよいです。但し、オーバロードした関数内ではC++の関数を使うとC++関数の中でnewが再び呼び出される可能性があるため、C++関数を使わないような工夫が必要です。C++関数を利用すると無限スタックが発生し、new演算子の呼び出しでプログラムが暴走します。 | ||
+ | <syntaxhighlight lang="cpp"> | ||
+ | void* operator new(size_t sizeNew) { | ||
+ | return malloc(sizeNew); | ||
+ | } | ||
+ | void operator delete(void* pDelete) { | ||
+ | free(pDelete); | ||
+ | } | ||
+ | </syntaxhighlight> |