相关疑难解决方法(0)

什么是C++中的合同17

我正在阅读B. Stroustrup的关于C++ 17思考合同,并协助一个小小的演讲,谈论他们,但我不确定我是否真的理解它们.

所以我有一些问题,如果有可能用一些例子来说明它们:

  • 合同是否是经典的更好替代品,assert()它们应该一起使用吗?对于软件开发人员来说,简单的合同是什么?

  • 合同会对我们处理异常的方式产生影响吗?如果是,我们应该如何使用例外和合同?

  • 使用合同是否意味着执行时的开销?我们是否允许在发布代码上停用它们?

提案N4415编辑:

可以编写Vector类的索引操作符的前置条件合约:
T& operator[](size_t i) [[expects: i < size()]];

类似地,ArrayView类的构造函数上的条件后约定可表示为: ArrayView(const vector<T>& v) [[ensures: data() == v.data()]];

c++ design-by-contract assertion c++17

36
推荐指数
2
解决办法
2万
查看次数

标签 统计

assertion ×1

c++ ×1

c++17 ×1

design-by-contract ×1