以下のものはどこにも使用していませんが、それでもこの質問は長い間私の頭の中にありました。
void* operator new (size_t size)
{
// distort `size` to other value
return malloc(size);
}
上記がオーバーロードの明確に定義された動作ではない可能性があることを知っているのでnew
(たとえば、size
が減少した場合)、なぜ標準でコンパイラにそれを強制しないのvoid* operator new (const size_t);
ですか?
同じことがoperator delete
、必要な場所でも議論できます(ポインタが変更されないようにvoid operator delete (void* const);
追加します)。const