标签:private 解释 笔试 return 析构函数 编译 class pre 没有
现在的笔试题是真的妖孽啊,
class A { private: char * buf; public: A() { buf = new char[256]; printf("1"); } virtual ~A() { delete[] buf; printf("2"); } }; int main() { void *a = new A; delete a; return 0; }
结果是 并不会调用 A 的析构函数。
正常人会这么写代码吗,我挺好奇的。
为什么不会调用A的析构函数呢,这是因为,a所指向的空间类型是void* ,也就是没有类型,没有类型,你怎么调用析构函数,好笑。
但是 这样写,对编译器重新解释一下,就没有问题了。
delete reinterpret_cast<A*>(a);
还是熟人好呀,生人,编译器才不搭理你呢。
标签:private 解释 笔试 return 析构函数 编译 class pre 没有
原文地址:https://www.cnblogs.com/randyniu/p/9461001.html