核心 cpp 指南中 f(T*, int) 接口与 f(span<T>) 接口的含义
Meaning of f(T*, int) interfaces vs. f(span<T>) interfaces in core cpp guidelines
核心
CPP指南的第P3节在其执行部分提供了以下模式:
f(T*, int) 接口与 f(span) 接口
谁能解释一下这对一个想要理解现代C++的粗鲁老C程序员意味着什么?
P3 部分是关于"表达意图"的。因此,想法是哪一个更清楚地表达意图。
考虑f(T*, int)
.我们不得不问:
- 指针指向单个对象还是数组?
- 整数是表示数组大小还是其他东西?
信息在函数签名中没有很好地表达。它必须通过其他方式获得,例如文档、命名约定等。
另一方面,当我们看到f(span<T>)
有一个明确且不容置疑的意图时:该函数接受一个数组(通过span<T>
对象引用)。意图很明确,因为这是span
的唯一目的,不像指针是多用途的。
因此,如果意图是采用数组,f(span<T>)
更好地陈述意图。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 如何防止clang格式在流运算符调用之间添加换行符<<
- Visual C++GC接口如何启用它以及要包含哪个库
- Windows.h与GLFW.h的接口
- <<操作员在下面的行中工作
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 提供与TMP和SFINAE的通用接口
- 为重写std::exception的库生成swig接口时出错
- 内联如何影响模块接口中的成员函数
- COM 接口 c# 封送数组数组
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如何绑定 C++ gRPC 客户端的网络接口
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何从实现接口的模板化类实例访问结构
- 带有进度表的 curl 多接口程序
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 我可以在具有一个标头和一个接口的 cpp 文件中有多个嵌入吗?