在C++ 11 N3485 5.3.5.1中它说:
操作数[of
delete]应该是指向对象类型或类类型的指针.如果是类类型,则操作数在上下文中转换为指向对象类型的指针.
这种用法的例子是什么(操作数是类类型的)?
For*_*veR 10
如果是类类型,则操作数被上下文隐式转换为指向对象类型的指针.
因此,您可以使用deleteon对象,但是当且仅当此类型具有隐式转换运算符指针时.
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;
}
Run Code Online (Sandbox Code Playgroud)
但是,它不是C++ 11的新功能,在C++ 03标准中几乎有相同的单词
操作数应具有指针类型,或具有指针类型的单个转换函数(12.3.2)的类类型.