将基础转换为派生类时,在编译时不抛出错误

拉贝拉纳

您具有以下所示的类:

public class A
{
}

public class B : A
{
}

您将基类转换为派生类的类型

A w = (B) new A();    
B x = (B) new A();

这将无法在运行时起作用,因为您无法真正将基类转换为派生类。

但是why is there no compile time error为什么Visual Studio在抛出错误之前允许我达到运行时间?

阿列克谢·列文科夫(Alexei Levenkov)

有2种类型的演员

  • 一旦班级没有共同基础并因此转型就没有成功的机会,那显然是不允许的。即'string'到'int'。此类强制转换会被编译器捕获并导致错误。
  • 具有成功机会的演员表-衍生出来的人有合理的成功机会。编译器允许进行此类转换。

我相信(B)new A()即使强制转换失败也(B)someObjectOfTypeA可以在编译时允许的原因是因为可以成功,new A()并且绝对是此类“ A类对象”之一。编译时检测可能会需要额外的基础结构,并且没有被认为是有益的(因为此强制转换在运行时立即失败,因此即使对您的代码进行最基本的测试也很少会错过)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将基础转换为派生类时,在编译时不抛出错误

来自分类Dev

在编译时定义多个派生类

来自分类Dev

将基础对象转换为派生类

来自分类Dev

通过使用特质的模板类在编译时抛出错误来禁用函数

来自分类Dev

通过使用特质的模板类在编译时抛出错误来禁用函数

来自分类Dev

实体框架:-每个层次结构查询在表中强制转换以派生类抛出异常时出错

来自分类Dev

常量大小的数组,在编译时已知..但仅在派生类中

来自分类Dev

编译时的派生类发现

来自分类Dev

为什么编译时不抛出错误?

来自分类Dev

将派生类指针转换为基类时,基类不明确

来自分类Dev

派生类没有额外的数据成员;将基础对象静态转换为派生对象是否安全?

来自分类Dev

gulp-sass将文件从scss转换为css时抛出错误

来自分类Dev

#include <mutex> 导致 bind() 函数调用在编译时抛出错误,为什么?

来自分类Dev

将派生类转换为父类时,您会丢失数据吗?

来自分类Dev

将基类数组转换为派生类数组

来自分类Dev

将基类转换为派生类

来自分类Dev

通过反射将基类转换为派生类

来自分类Dev

将基类的指针转换为派生类(参考)

来自分类Dev

在派生类中缺少静态成员变量时强制进行编译错误

来自分类Dev

使用std :: enable_if限制派生类的模板参数时发生编译错误

来自分类Dev

C ++ sscanf在编译时抛出“无适当的转换”错误且类型不相关

来自分类Dev

创建派生类构造函数时出错

来自分类Dev

通过基础指针将派生类强制转换为基础之一

来自分类Dev

当尝试使用接口字典作为方法参数时,为什么编译器不能从派生类转换为它的接口?

来自分类Dev

(GCC错误?)隐式转换为派生类

来自分类Dev

将PTR转换为派生类的PTR

来自分类Dev

将Json JObject转换为派生类

来自分类Dev

从ArrayList <Object>转换为ArrayList <Custom>类时抛出错误,而Object到Custom则没有

来自分类Dev

将错误,“将值'ID'转换为类型时出错”

Related 相关文章

  1. 1

    将基础转换为派生类时,在编译时不抛出错误

  2. 2

    在编译时定义多个派生类

  3. 3

    将基础对象转换为派生类

  4. 4

    通过使用特质的模板类在编译时抛出错误来禁用函数

  5. 5

    通过使用特质的模板类在编译时抛出错误来禁用函数

  6. 6

    实体框架:-每个层次结构查询在表中强制转换以派生类抛出异常时出错

  7. 7

    常量大小的数组,在编译时已知..但仅在派生类中

  8. 8

    编译时的派生类发现

  9. 9

    为什么编译时不抛出错误?

  10. 10

    将派生类指针转换为基类时,基类不明确

  11. 11

    派生类没有额外的数据成员;将基础对象静态转换为派生对象是否安全?

  12. 12

    gulp-sass将文件从scss转换为css时抛出错误

  13. 13

    #include <mutex> 导致 bind() 函数调用在编译时抛出错误,为什么?

  14. 14

    将派生类转换为父类时,您会丢失数据吗?

  15. 15

    将基类数组转换为派生类数组

  16. 16

    将基类转换为派生类

  17. 17

    通过反射将基类转换为派生类

  18. 18

    将基类的指针转换为派生类(参考)

  19. 19

    在派生类中缺少静态成员变量时强制进行编译错误

  20. 20

    使用std :: enable_if限制派生类的模板参数时发生编译错误

  21. 21

    C ++ sscanf在编译时抛出“无适当的转换”错误且类型不相关

  22. 22

    创建派生类构造函数时出错

  23. 23

    通过基础指针将派生类强制转换为基础之一

  24. 24

    当尝试使用接口字典作为方法参数时,为什么编译器不能从派生类转换为它的接口?

  25. 25

    (GCC错误?)隐式转换为派生类

  26. 26

    将PTR转换为派生类的PTR

  27. 27

    将Json JObject转换为派生类

  28. 28

    从ArrayList <Object>转换为ArrayList <Custom>类时抛出错误,而Object到Custom则没有

  29. 29

    将错误,“将值'ID'转换为类型时出错”

热门标签

归档