我经常在 C++ 面试问题中看到以下术语:
- 程序中止
- 错误
- 失败
- 陷阱
我不确定是否清楚地看到这些术语之间的差异。有人可以提供一个清晰简洁的解释吗?
编辑:上下文问题是:“当你两次删除指针时会发生什么? ”但了解这些术语之间的差异对我来说比答案更重要。
我经常在 C++ 面试问题中看到以下术语:
我不确定是否清楚地看到这些术语之间的差异。有人可以提供一个清晰简洁的解释吗?
编辑:上下文问题是:“当你两次删除指针时会发生什么? ”但了解这些术语之间的差异对我来说比答案更重要。
这些并不是 C++ 所特有的。
中止是因为出现问题而终止程序或特定操作。有一个std::abort
从 C 库继承的 C++ 库函数,它像通过外部信号一样杀死程序,并且不运行析构函数或清理。
错误是出现问题时。在 C++ 中,许多类型的错误不一定能立即检测到。相反,C++ 指定了未定义的行为,这可能涉及安静的内存损坏,以后可能会导致神秘的不当行为。
失败是指程序做错事。这是一个非常通用的工程术语。尖头发的老板可能比其他人更熟悉这个概念,因为这是客户真正意识到的唯一一个。
陷阱是当程序检测到错误情况并相应地采取一些措施时。
因此,如果您检测到网络出现故障,并在退出前向用户显示“无法继续;您的文档已自动保存”之类的消息,那么您已陷入错误并中止,但仍然失败。