千家信息网

C++为什么表示后置条件最好使用Ensures()

发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,这篇文章主要讲解了"C++为什么表示后置条件最好使用Ensures()",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++为什么表示后置条件最好使用E
千家信息网最后更新 2024年10月24日C++为什么表示后置条件最好使用Ensures()

这篇文章主要讲解了"C++为什么表示后置条件最好使用Ensures()",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++为什么表示后置条件最好使用Ensures()"吧!

I.8: Prefer Ensures() for expressing postconditions(表示后置条件最好使用Ensures())

Reason(原因)

To make it clear that the condition is a postcondition and to enable tool use.

明确的表示该条件是后置条件,同时也让工具检查成为可能。

Example(示例)

void f(){    char buffer[MAX];    // ...    memset(buffer, 0, MAX);    Ensures(buffer[0] == 0);}
Note(注意)

后置条件可以以多种方式表达,包括注释,if语句和assert()。但是使用这些方式表达的后置条件很难从原始代码中区分出来,难以更新,难以被工具处理,还可能会包含错误的语义。

Alternative: Postconditions of the form "this resource must be released" are best expressed by RAII.

其他选项:"这个资源必须被释放"形式的后置条件最好通过RAII体现。

Note(注意)

理想情况下,Ensures应该成为接口的一部分,但这并不容易实现。到目前为止,我们还是将他放到定义(函数体)中。当语言支持可用时(例如,参考contract建议),我们将会导入前置条件,后置条件和断言。

译者注:contract指的是一直在讨论,C++20即将引入的新特性contract。

Enforcement(实施建议)

(非强制)发现多种确认后置条件的方式是不现实的。警戒那些容易标识(assert())的,由于语言功能的缺失而有疑问的数值。

感谢各位的阅读,以上就是"C++为什么表示后置条件最好使用Ensures()"的内容了,经过本文的学习后,相信大家对C++为什么表示后置条件最好使用Ensures()这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0