Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 核心cpp指南中f(T*,int)接口与f(span<;T>;)接口的含义_C++_Cpp Core Guidelines - Fatal编程技术网

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

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)时,它有一个明确而毫无疑问

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

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

可以解释一下,对于一个老练的C程序员,理解现代C++的含义是什么?

< P>章节P3是关于“Express Posits”的。因此,问题的关键在于谁能更清楚地表达意图

考虑
f(T*,int)
。我们必须问:

  • 指针指向单个对象还是数组
  • 整数是表示数组大小还是其他什么
  • 这些信息在函数签名中没有得到很好的表达。必须通过其他方式获得,如文件、命名约定等

    另一方面,当我们看到
    f(span)
    时,它有一个明确而毫无疑问的意图:函数接受一个数组(通过
    span
    对象引用)。意图很明确,因为这是
    span
    的唯一目的,而指针是多用途的

    因此,
    f(span)
    如果意图是获取一个数组,则说明意图更好。

    第P3节是关于“明示意图”。因此,问题的关键在于谁能更清楚地表达意图

    考虑
    f(T*,int)
    。我们必须问:

  • 指针指向单个对象还是数组
  • 整数是表示数组大小还是其他什么
  • 这些信息在函数签名中没有得到很好的表达。必须通过其他方式获得,如文件、命名约定等

    另一方面,当我们看到
    f(span)
    时,它有一个明确而毫无疑问的意图:函数接受一个数组(通过
    span
    对象引用)。意图很明确,因为这是
    span
    的唯一目的,而指针是多用途的


    因此,
    f(span)
    如果意图是获取数组,则说明意图更好。

    更多关于
    span
    更多关于
    span
    除了您提出的问题之外,我还要添加“指针可以为空吗?”和“所有权语义是什么?”(对后者的回答应该是调用者拥有数据-但是有足够的遗留API,这仍然是一个必须要问的问题)。除了您提出的问题之外,我还要添加“指针可以为null吗?”和“所有权语义是什么?”(后者的答案应该是调用者拥有数据——但是有足够的遗留API,这仍然是一个必须要问的问题)。