c++ 11删除类类型

C++11 Delete Class Type?

本文关键字:类型 删除 c++      更新时间:2023-10-16

在c++ 11 N3485 5.3.5.1中,它说:

操作数[delete]必须是指向对象类型或类类型的指针。如果为类类型,则操作数在上下文中转换为指向对象类型的指针。

这种用法的例子是什么(操作数是类类型)?

如果为类类型,则操作数在上下文中隐式转换为指向对象类型的指针。

因此,可以在对象上使用delete,但是当且仅当该类型具有隐式指针转换操作符时。

class A
{
public:
   class Inner {};
   A()
   {
      inner = new Inner();
   }
   operator Inner*() { return inner; }
private:
   Inner* inner;
};
int main()
{
   A* a = new A();
   delete *a;
   delete a;
}
然而,这并不是c++ 11的新特性,在c++ 03标准中有几乎相同的词

操作数必须有一个指针