class Demo_Class; void do_delete(Demo_Class* p) { delete p; } class Demo_Class{ public: ~Demo_Class() { cout<<"析构"; } };
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // testConst(); auto p = new Demo_Class(); do_delete(p); return a.exec(); }
不会调用析构,对于do_delete来说,
Demo_Class只有声明,数据类型不完整,掉不到析构。
所以说智能指针就能解决这个问题,内部会检查数据的完整性,不完整的话都编译不过哦