回答
因为没有为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. Swift3:投射UIViewController子类失败
- 6. dynamic_cast在从Python调用C++ API时失败
- 7. Gif验证失败:喜欢:投射阵列失败,值“1”,路径为“likes”
- 8. 为什么我快速动态投射失败?
- 9. [CastError:在路径“_id”处投射到ObjectId失败,值为“undefined”
- 10. C++ dll投掷断言失败
- 11. 当试图将JSON转换为字典时,Swift动态投射失败
- 12. 投常量类的dynamic_cast
- 13. GeoServer:重新投影时缓存失败
- 14. 无法投射C#
- 15. 当dynamic_cast失败时,这意味着什么?
- 16. 从'JSON'投射到无关类型'String'始终失败
- 17. 将Linq查询投射到数据集失败
- 18. Swift应用程序 - 从AnyObject投射到NSArray似乎失败
- 19. 使用转换操作符投射对象失败
- 20. C#检查对象是否可以投射到另一个对象失败?
- 21. 从'[NSObject:AnyObject]中投射?'无关型“的NSDictionary”总是失败
- 22. 。 {[CastError:投射日期在路径“createdAt”处的值“[object Object]”失败)
- 23. 运行时检查失败#2 S C++
- 24. 参数为真时C++声明失败
- 25. Android Chromecast:投射本地音频文件失败
- 26. Infinispan with Spring,从缓存失败中投射
- 27. 从'NSMutableArray'投射到不相关的类型'[String]'总是失败
- 28. C++的dynamic_cast
- 29. 为什么ConvertTo有效,但在某些情况下投射失败?
- 30. CastError:在模型“Blog”的路径“_id”上投射到ObjectId失败,值为“X”
其实可能有空引用! – 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