0
void operator delete(void *p)
{
    printf("\nDELETE");

    // code to actually delete/free object
}


int _tmain(int argc, _TCHAR* argv[])
{

    int *p = new int(10);

    delete p;

    getchar();
    return 0;
}

エラー演算子の削除がすでに定義されています

new演算子とdelete演算子をグローバルにオーバーライドしたい。

4

2 に答える 2

0

解放関数は、次の 2 つの方法で置き換え/オーバーロードできます。

グローバル スコープ: それを呼び出すには、オーバーロードされた割り当て関数のシグネチャが、暗黙的に宣言された既定の割り当て解除関数を除いて、割り当て解除の場所で可視である必要があります。この割り当て関数は、ローカル スコープ内の現在のプログラムの対応するパラメーターを持つすべての割り当て解除に使用されます。オーバーロードされた演算子 delete は、クラスの静的パブリック メンバー関数である必要があります。この割り当て解除関数は、その特定のクラスの割り当て解除にのみ使用されます。

于 2013-03-22T10:09:45.283 に答える
0

それを実装しただけですか、それとも宣言しましたか?Afaik、あなたはそれを実装するだけです。

于 2013-03-22T09:55:40.827 に答える