回答
因为没有为NULL参考:)
其实有可能是空引用(或者更确切地说,参考空)没有这样的事,但它是不确定的行为(UB)。由于标准不会定义 UB,所以dynamic_cast
抛出非常明确的异常。
Im not following :)请解释:) – ScarletAmaranth 2011-12-19 18:36:29
对NULL的引用应该是'int const&'类型,但我不认为这就是你的意思。但是,如果没有有效的对象来引用它,则无法初始化引用。 – 2011-12-19 18:41:15
@JamesKanze:这就是我的意思。 – Nawaz 2011-12-19 18:42:31
- 1. dynamic_cast失败
- 2. dynamic_cast如何失败?
- 3. dynamic_cast在隐藏符号时失败
- 4. 为什么auto_ptr的dynamic_cast失败?
- 5. dynamic_cast在从Python调用C++ API时失败
- 6. Swift3:投射UIViewController子类失败
- 7. Swift动态投射失败UIPageViewController
- 8. Gif验证失败:喜欢:投射阵列失败,值“1”,路径为“likes”
- 9. 日食 - C++“发射失败”
- 10. 为什么我快速动态投射失败?
- 11. [CastError:在路径“_id”处投射到ObjectId失败,值为“undefined”
- 12. dynamic_cast on llvm clang编译器失败
- 13. C++ dll投掷断言失败
- 14. 投常量类的dynamic_cast
- 15. 当试图将JSON转换为字典时,Swift动态投射失败
- 16. 在C++ 11中,失败的dynamic_cast是否返回NULL或std :: nullptr?
- 17. GeoServer:重新投影时缓存失败
- 18. 如何投射对象在C#中使用反射运行时?
- 19. 无法投射C#
- 20. 自定义投射系统,以避免缓慢dynamic_cast和qobject_cast
- 21. 有没有办法使用dynamic_cast投射到孩子?
- 22. 当dynamic_cast失败时,这意味着什么?
- 23. 从C++中的数组动态投射
- 24. 为什么受保护的继承导致dynamic_cast失败?
- 25. Java投到列表失败
- 26. 从'JSON'投射到无关类型'String'始终失败
- 27. 将Linq查询投射到数据集失败
- 28. Swift应用程序 - 从AnyObject投射到NSArray似乎失败
- 29. 使用转换操作符投射对象失败
- 30. C#检查对象是否可以投射到另一个对象失败?
其实可能有空引用! – Nawaz 2011-12-19 18:34:09
该代码将被编译,但会导致未定义的行为:'int&i = *((int *)0);'。在(非常罕见的)情况下,'dyanmic_cast'导致未定义的行为是错误的,因为选择了无效类型作为转换的端点,所以它会抛出一个异常,这是一个定义良好的行为。 :-) – Omnifarious 2011-12-19 18:55:11
是的,我在这里寻找更多的高层次原因,詹姆斯坎泽几乎总结了它,你不能初始化没有对象的引用来引用它。 – ScarletAmaranth 2011-12-19 18:56:56