10000)-6ren">
gpt4 book ai didi

c++ - C++ 中的流运算符异常是可以回滚的

转载 作者:行者123 更新时间:2023-11-28 00:33:30 24 4
gpt4 key购买 nike

String EvaluateSalaryAnadReturnName( Employee e) {
if (e.Title() == "CEO" || e.Salary() > 10000) {
cout << e.First() << " " << e.Last() << " is overpaid" << endl;
}

return e.First() + " " + e.Last();
}

在上面的程序中,我研究了如果在 cout 中生成异常在 << is overpaid或任何 cout stream 的强保证说,如果函数失败是因为 enter code here 异常,程序状态不能改变。

C++ 中的流运算符 (<<) 在生成异常时不可滚动。表示由于 << operator

而产生异常

因此由于无法展开或未完全提交或未完全回滚其状态将被更改

谁能解释一下为什么它不能回滚

最佳答案

某些数据可能已经写入输出设备,但您无法告诉该输出设备以某种方式撤消它。想一想,如果您将输出通过管道传输到语音合成程序,它是否应该及时返回以撤消音频输出?打印机怎么样?

当您不知道输出的去向时,回滚是不可能的。

最好不要混合 I/O 和业务逻辑,因为 I/O 很可能会因涉及外部因素(其他进程和硬件)而失败。

关于c++ - C++ 中的流运算符异常是可以回滚的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21875021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com