第P3核心 cpp 指南在其执行部分提供了以下模式:
f(T*, int) interfaces vs. f(span) interfaces
任何人都可以向想要了解现代 C++ 的固执的老 C 程序员解释这意味着什么吗?
最佳答案
P3 部分是关于“表达意图”的。因此,这个想法是哪一个更清楚地表达了意图。
考虑 f(T*, int)
.我们不得不问:
- 指针指向单个对象还是数组?
- 整数是代表数组大小还是其他?
函数签名中的信息没有很好地表达。它必须通过其他方式获得,例如文档、命名约定等
另一方面,当我们看到 f(span<T>)
有一个明确且不容置疑的意图:该函数接受一个数组(通过 span<T>
对象引用)。意图很明确,因为这是 span
的唯一目的。 ,不像指针是多用途的。
所以,f(span<T>)
如果意图是采用数组,则可以更好地说明意图。
关于c++ - 核心 cpp 指南中 f(T*, int) 接口(interface)与 f(span<T>) 接口(interface)的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091021/