标签: c++
在未初始化实例时,同时具有operator *()和operator->() - 未定义行为的动机是什么?
为什么不将它视为错误并抛出异常?
答案 0 :(得分:1)
运行时性能。
见proposal, revision 4,其中说:
对于已脱离的对象使用间接运算符是未定义的 行为。此行为可提供最大的运行时性能。
答案 1 :(得分:0)
我猜它们是如此低级(它只是编译器的内存访问),异常处理对于这种性能价格低廉的方法来说是一种过度杀伤。
答案 2 :(得分:0)
表现基本上。不检查是否需要无效值,无需例外。如果你想要例外,那就是value方法。
value