【问题标题】:Meaning of f(T*, int) interfaces vs. f(span<T>) interfaces in core cpp guidelines核心 cpp 指南中 f(T*, int) 接口与 f(span<T>) 接口的含义
【发布时间】:2017-11-03 08:04:36
【问题描述】:

核心 cpp 指南的 P3 部分在其实施部分提供了以下模式:

f(T*, int) 接口与 f(span) 接口

谁能解释一下对于想要理解现代 C++ 的顽固的老 C 程序员意味着什么?

【问题讨论】:

  • 更多关于spanhere

标签: c++ cpp-core-guidelines


【解决方案1】:

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

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

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

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

另一方面,当我们看到f(span&lt;T&gt;) 有一个明确且不容置疑的意图时:该函数接受一个数组(通过span&lt;T&gt; 对象引用)。意图很明确,因为这是 span 的唯一目的,不像指针是多用途的。

所以,f(span&lt;T&gt;) 如果意图是获取一个数组,则更好地说明意图。

【讨论】:

  • 除了您提出的问题之外,我还要添加“指针可以为空吗?”和“所有权语义是什么?” (后者的答案应该是调用者er拥有数据 - 但有足够多的旧 API 仍然是一个必须提出的问题)。跨度>
猜你喜欢
  • 2017-12-17
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多