是否可以在不知道类类型而不使用的情况下调用对象的析构函数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;
}
(我知道我可以直接调用 delete,但请暂时忽略它。)