“删除p”和“p-> ~MyClass()”之间的区别

时间:2017-07-04 03:48:51

标签: c++ c++11

class MyClass
{
    public:
        MyClass()
        {
            std::cout << "MyClass Constructor" << std::endl;
        }

        ~MyClass()
        {
            std::cout << "MyClass Destructor" << std::endl;
        }
};

int main()
{
    MyClass* p = new MyClass();
}

有什么区别 调用p-&gt; ~MyClass(); 要么 删除p;

两者都调用析构函数。

1 个答案:

答案 0 :(得分:2)

使用new运算符:

  1. 分配一大块记忆。
  2. 调用类的构造函数,this指向该内存。
  3. delete只是取消了new所做的事情,所以默认情况下会这样做:

    1. 调用析构函数,this指向其内存块。
    2. 释放内存块。
    3. 当然,您可以重载这些运算符以使其行为不同。