3

演算子 new で割り当てられているオブジェクトの型を取得する方法はありますか?

つまり、次のとおりです。

void* BaseClass::operator new(size_t size)
{
    void* result = ::operator new(size);

    //Get type of object that's being allocated

    return result;
}
4

2 に答える 2

2

このデータを取得するメカニズムはありません。operator newサイズを指定して生メモリを割り当てるだけでnew、割り当てられたメモリにオブジェクトを構築するための型を知っているのは演算子呼び出しだけです。

于 2012-12-28T18:23:08.540 に答える
1

いいえ、できません。演算子 new は、静的関数として定義していなくても、暗黙的に静的関数です。thisこれは静的関数であるため、ポインターでtypeid を使用してオブジェクトの型を取得するようなことはできません。

于 2012-12-28T18:12:24.320 に答える