を使用せずにクラスタイプを知らなくてもオブジェクトのデストラクタを呼び出すことは可能delete
ですか?私はアロケータ(楽しみ/練習用)に取り組んでいて、オブジェクトをコンストラクターするためにmalloc
/配置を使用しているので質問new
していますが、オブジェクトを破棄するときに、知らないうちにそうする方法があるかどうか興味がありましたタイプ。それが不可能な場合は、なぜですか?それを行う唯一の方法は、サンプルコード(コメントアウトされている)に表示する方法ですか?
#include <stdio.h>
#include <new>
void* SomeAllocationFunction(size_t size) {
return malloc(size);
}
class SomeClass{
public:
SomeClass() {
printf("Constructed\n");
}
~SomeClass() {
printf("Destructed\n");
}
};
int main(void){
void* mem = SomeAllocationFunction(sizeof(SomeClass));
SomeClass* t = new(mem)SomeClass;
free(t);
//t->~SomeClass(); // This will call the destructor, is it possible to do this without knowing the class?
return 0;
}
(削除を呼び出すことができることはわかっていますが、今のところ無視してください。)