仅子类具有虚拟方法时使用多态性的问题

我提供

以下代码是否以任何方式违反C ++ 11标准?我在VC ++ 2013中收到失败的断言。

class P {};

class C : public P
{
public:
    virtual void a() {}
};

int main()
{
    P* p = new C();
    delete p;
}

失败的断言是:

File: f:\dd\vctools\crt\crtw32\misc\dbgdel.cpp
Line: 52

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
干杯和hth。-阿尔夫

是的,

delete p;

由于指针的动态类型不同于静态已知的类型,并且静态对象没有虚拟析构函数,因此它具有未定义的行为。

C ++ 11§5.3.5/ 3:

在第一种选择(删除对象)中,如果要删除的对象的静态类型与它的动态类型不同,则静态类型应为要删除的对象的动态类型的基类,而静态类型应为具有虚拟析构函数或行为未定义

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅子类具有虚拟方法时使用多态性的问题

来自分类Dev

具有不同模板类型的子类的多态性

来自分类Dev

使用具有多态性的通用接口

来自分类Dev

嵌套类与不具有多态性的子类之间的C#差异

来自分类Dev

如果对象具有多态性而不是多重继承,则虚拟指针在对象中的位置是否不同?

来自分类Dev

如果对象具有多态性而不是多重继承,则虚拟指针在对象中的位置是否不同?

来自分类Dev

C ++多态性-调用具有不同签名的派生类方法

来自分类Dev

仅使用静态多态性的异构容器

来自分类Dev

具有可选IBOutlet的属性多态性

来自分类Dev

具有多态性的C ++复制指针的向量

来自分类Dev

接口为类型的数组(具有接口的多态性)

来自分类Dev

具有final或模板的静态多态性?

来自分类Dev

C ++:运算符=具有多态性的重载

来自分类Dev

接口为类型的数组(具有接口的多态性)

来自分类Dev

具有多态性的C#泛型

来自分类Dev

Haskell 返回具有类限制的类型多态性

来自分类Dev

Rails 5 命名范围具有多态性,UndefinedColumn

来自分类Dev

C ++多态性。方法

来自分类Dev

是否有使用多态性删除此switch语句的好方法?

来自分类Dev

如何调用没有多态性的虚方法?

来自分类Dev

向下转换为子类的问题,多态性不起作用

来自分类Dev

这是使用多态性的正确方法吗

来自分类Dev

在php中使用多态性的正确方法?

来自分类Dev

当实现依赖于子类时,如何解决“多态性类事件的调用”?

来自分类Dev

当我无法使用基类引用调用派生类方法时,动态多态性有什么用?

来自分类Dev

OCaml对象的多态性键入问题

来自分类Dev

参数多态性和子类型多态性之间的概念区别?

来自分类Dev

使用Jackson为多态性在运行时添加子类型信息

来自分类Dev

使用智能指针时,clang和gcc不会针对多态性使用非虚拟基本析构函数发出警告吗?

Related 相关文章

  1. 1

    仅子类具有虚拟方法时使用多态性的问题

  2. 2

    具有不同模板类型的子类的多态性

  3. 3

    使用具有多态性的通用接口

  4. 4

    嵌套类与不具有多态性的子类之间的C#差异

  5. 5

    如果对象具有多态性而不是多重继承,则虚拟指针在对象中的位置是否不同?

  6. 6

    如果对象具有多态性而不是多重继承,则虚拟指针在对象中的位置是否不同?

  7. 7

    C ++多态性-调用具有不同签名的派生类方法

  8. 8

    仅使用静态多态性的异构容器

  9. 9

    具有可选IBOutlet的属性多态性

  10. 10

    具有多态性的C ++复制指针的向量

  11. 11

    接口为类型的数组(具有接口的多态性)

  12. 12

    具有final或模板的静态多态性?

  13. 13

    C ++:运算符=具有多态性的重载

  14. 14

    接口为类型的数组(具有接口的多态性)

  15. 15

    具有多态性的C#泛型

  16. 16

    Haskell 返回具有类限制的类型多态性

  17. 17

    Rails 5 命名范围具有多态性,UndefinedColumn

  18. 18

    C ++多态性。方法

  19. 19

    是否有使用多态性删除此switch语句的好方法?

  20. 20

    如何调用没有多态性的虚方法?

  21. 21

    向下转换为子类的问题,多态性不起作用

  22. 22

    这是使用多态性的正确方法吗

  23. 23

    在php中使用多态性的正确方法?

  24. 24

    当实现依赖于子类时,如何解决“多态性类事件的调用”?

  25. 25

    当我无法使用基类引用调用派生类方法时,动态多态性有什么用?

  26. 26

    OCaml对象的多态性键入问题

  27. 27

    参数多态性和子类型多态性之间的概念区别?

  28. 28

    使用Jackson为多态性在运行时添加子类型信息

  29. 29

    使用智能指针时,clang和gcc不会针对多态性使用非虚拟基本析构函数发出警告吗?

热门标签

归档