delete 的工作方式
delete 运算符将调用函数运算符 delete。
对于不是类类型(class、struct 或 union)的对象,将调用全局 delete 运算符。 对于类类型的对象,如果删除表达式以一元范围解析运算符 (::) 开始,则会在全局范围中解析释放函数的名称。 否则,delete 运算符将在释放内存之前为对象调用析构函数(如果指针不为 null)。 可为每个类定义 delete 运算符;如果给定类不存在这种定义,则会调用全局 delete 运算符。 如果删除表达式用于释放其静态对象具有虚拟析构函数的类对象,则将通过对象的动态类型的虚拟析构函数解析释放函数。