C++ - 本地名称对类型的重要性
C++ - Significance of local names for types
我最近读到了如何允许类为类型定义自己的本地名称。一个著名的例子是size_type
,几乎所有的STL容器都提供。还提到这样做有助于对类的用户隐藏实现详细信息。我不太确定这是怎么回事。
哪些示例中,为类型定义本地名称可能很有用,以及如何这样做隐藏实现详细信息?
请提供一些示例,说明为类型定义本地名称可能很有用,以及它如何隐藏实现细节。
当您使用模板化算法或容器时,它更有用,这些算法或容器可能假定您的类型具有此类类型别名。因此,即使您修改了size_type的类型 - 即由于某种原因从 size_t
更改为 int
,那么您的类型仍然可以使用这些算法/容器。
当您实现自己的分配器时,标准要求存在size_type
。
假设您有一个程序,您可以在其中定义几个类型为 size_type
的变量,并且它在某处定义为int
。
然后,经过分析和反思,您意识到变量永远不会假设值超过 1 万。因此,用于分配每个变量的 32 位在某种程度上有点矫枉过正。在这种情况下,您可以将size_type
重新定义为short
类型,而不是 int
。因此,您最终将节省一些内存。
关于示例,您可以检查clock_t
、char16_t
、char32_t
、wchar_t
、true_type
和false_type
。
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板元程序查找相似的连续类型名称
- 是否可以从int转换为enum类类型
- 构造函数正在调用一个使用当前类类型的函数
- 我应该使用什么来代替void作为变体中的替代类型之一
- C++ - 本地名称对类型的重要性