"delete p"和"p->~MyClass()"之间的区别


class MyClass
{
public:
MyClass()
{
std::cout << "MyClass Constructor" << std::endl;
}
~MyClass()
{
std::cout << "MyClass Destructor" << std::endl;
}
};
int main()
{
MyClass* p = new MyClass();
}

两者之间有什么区别 调用 p->~MyClass((; 或 删除P;

两者都调用析构函数。

使用new运算符将:

  1. 分配内存块。
  2. 调用类的构造函数,this指向该内存。

delete只是撤消new所做的事情,因此默认情况下它将:

  1. 调用析构函数,this指向其内存块。
  2. 释放内存块。

当然,您可以重载这些运算符以使其行为不同。

最新更新