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

Meaning of f(T*, int) interfaces vs. f(span<T>) interfaces in core cpp guidelines

本文关键字:接口 lt gt span int cpp 核心      更新时间:2023-10-16
核心

CPP指南的第P3节在其执行部分提供了以下模式:

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

谁能解释一下这对一个想要理解现代C++的粗鲁老C程序员意味着什么?

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

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

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

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

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

因此,如果意图是采用数组,f(span<T>)更好地陈述意图。