c++ - 核心 cpp 指南中 f(T*, int) 接口(interface)与 f(span<T>) 接口(interface)的含义

标签 c++ cpp-core-guidelines

P3核心 cpp 指南在其执行部分提供了以下模式:

f(T*, int) interfaces vs. f(span) interfaces

任何人都可以向想要了解现代 C++ 的固执的老 C 程序员解释这意味着什么吗?

最佳答案

P3 部分是关于“表达意图”的。因此,这个想法是哪一个更清楚地表达了意图。

考虑 f(T*, int) .我们不得不问:

  1. 指针指向单个对象还是数组?
  2. 整数是代表数组大小还是其他?

函数签名中的信息没有很好地表达。它必须通过其他方式获得,例如文档、命名约定等

另一方面,当我们看到 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/

相关文章:

c++ - 运算符继承问题和 cpp 核心指南 c.128

c++ - 您是否打算从违反契约(Contract)中恢复过来?

c++ - 是否有合法的方式从 gsl::not_null<T> 转移?

c++ - 如何在运行时加载 COM DLL

c++ - 调用函数

c++ - 无法将带有 const 参数的函数转换为函数指针?

c++ - git 克隆器的项目依赖

c++ - 为什么 not_null 还没有进入 C++ 标准?

c++ - 是否有可以与 GCC 4.9.x 一起使用的 GSL 实现?

c++ - cmath 重载函数 C++ 的问题