c++ 11删除类类型
C++11 Delete Class Type?
在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标准中有几乎相同的词操作数必须有一个指针
相关文章:
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 从类型列表中递归删除重复项会导致编译器堆空间错误 (VS2017)
- 为什么 std::make_shared 无法编译带有已删除运算符 new 的类型?
- 将类型添加到现有模板而不删除 c++17
- 删除[]具有不同类型的未定义行为?
- 创建模板类型而不新建/删除
- 从 Typedef 数据类型中删除常量
- 当类型适当的构造函数可用时,为什么一个编译器尝试使用已删除的副本构造函数
- 删除对象(具有不同类型)的引用时会发生什么情况?
- 根据模板类型有条件地删除变量
- 从浮点数中删除小数部分但保留类型的有效方法
- 从自定义数据类型向量中删除重复元素
- C++ 模板<类型名 T> 删除
- 错误:在类型 "blah blah" 的绑定引用中删除限定符以初始化"some other blah blah"
- 为什么许多标准库类型在 C++20 中删除 operator!=?
- 如何从指针类型和指针到指针类型中删除__unaligned说明符
- 为什么在某些情况下从函数返回类型中删除 cv 限定符?
- C++ - 按自定义数据类型向量的值删除元素
- c ++ 我是否需要手动删除指向另一个具体类型的 void* 指针?
- 如何删除类内类类型的类成员指针