直接指向存储对象成员的初始地址,就会导致后面你delete的地址实际上是你申请的内存首地址+虚表指针大小的...
自己有个猜想,会不会是只能是申请内存空间的指针p能用delete,p2虽然和p一样,但它可能只有权限访问这...
又因为~A()是virtual的,所以运行时通过查表调用实际对像的析构函数即~B()。
当使用基类指针调用delete时,编译器无法确定指针所指对象的真实类型,因为基类指针可以指向任意派生类对象。
auto p = new derived(); base1 *a = p; delete a;你会发现这时候程序也会报错崩溃(当然这和...
按道理你把析构函数私有化,也没提供delete this,就是希望在堆上创建对象后不能被释放。所以第一种...