在Herb Sutter的书Exceptional C++(1999)中,他在第10项的解决方案中有词:
"异常不安全"和"糟糕的设计"齐头并进.如果一段代码不是异常安全的,那通常是可以的并且可以简单地修复.但是,如果一段代码由于其底层设计而不能被设置为异常安全,那几乎总是这是其设计不佳的信号.
示例1:具有两种不同职责的职能很难使例外安全.
示例2:以必须检查自我分配的方式编写的复制赋值运算符可能也不是强烈异常安全的
"检查自我分配"一词是什么意思?
[查询]
Dave和AndreyT向我们展示了"检查自我分配"的含义.非常好.但问题还没有结束.为什么"检查自我分配"会伤害"异常安全"(根据Hurb Sutter的说法)?如果调用者尝试进行自我分配,那么"检查"就像没有发生任何分配一样.真的疼吗?
[备忘1]在Herb的书后面的第38项对象身份中,他解释了自我分配.