C++ 核心cpp指南中f(T*,int)接口与f(span<;T>;)接口的含义
核心cpp指南的第节在其执行部分提供了以下模式: f(T*,int)接口与f(span)接口 可以解释一下,对于一个老练的C程序员,理解现代C++的含义是什么? < P>章节P3是关于“Express Posits”的。因此,问题的关键在于谁能更清楚地表达意图 考虑C++ 核心cpp指南中f(T*,int)接口与f(span<;T>;)接口的含义,c++,cpp-core-guidelines,C++,Cpp Core Guidelines,核心cpp指南的第节在其执行部分提供了以下模式: f(T*,int)接口与f(span)接口 可以解释一下,对于一个老练的C程序员,理解现代C++的含义是什么? < P>章节P3是关于“Express Posits”的。因此,问题的关键在于谁能更清楚地表达意图 考虑f(T*,int)。我们必须问: 指针指向单个对象还是数组 整数是表示数组大小还是其他什么 这些信息在函数签名中没有得到很好的表达。必须通过其他方式获得,如文件、命名约定等 另一方面,当我们看到f(span)时,它有一个明确而毫无疑问
f(T*,int)
。我们必须问:
f(span)
时,它有一个明确而毫无疑问的意图:函数接受一个数组(通过span
对象引用)。意图很明确,因为这是span
的唯一目的,而指针是多用途的
因此,f(span)
如果意图是获取一个数组,则说明意图更好。第P3节是关于“明示意图”。因此,问题的关键在于谁能更清楚地表达意图
考虑f(T*,int)
。我们必须问:
f(span)
时,它有一个明确而毫无疑问的意图:函数接受一个数组(通过span
对象引用)。意图很明确,因为这是span
的唯一目的,而指针是多用途的
因此,
f(span)
如果意图是获取数组,则说明意图更好。更多关于span
更多关于span
除了您提出的问题之外,我还要添加“指针可以为空吗?”和“所有权语义是什么?”(对后者的回答应该是调用者拥有数据-但是有足够的遗留API,这仍然是一个必须要问的问题)。除了您提出的问题之外,我还要添加“指针可以为null吗?”和“所有权语义是什么?”(后者的答案应该是调用者拥有数据——但是有足够的遗留API,这仍然是一个必须要问的问题)。