C ++ - 类型

时间:2016-07-04 21:08:19

标签: c++ class typedef

我最近读过如何允许类为类型定义自己的本地名称。其中一个着名的例子是size_type,几乎由所有STL容器提供。还提到这样做有助于隐藏类的用户的实现细节。我不太确定这是怎么回事。

为类型定义本地名称可能有用以及如何隐藏实现细节的一些示例是什么?

2 个答案:

答案 0 :(得分:1)

  

请提供一些示例,其中定义类型的本地名称可能有用,以及它如何隐藏实现细节。

当您使用模板化算法或容器时它更有用,它可能假设您的类型具有此类型别名。因此,即使您修改size_type的类型 - 即由于某种原因从size_t更改为int,您的类型仍将适用于这些算法/容器。

否则,当你实现自己的分配器时,标准需要size_type的存在。

答案 1 :(得分:1)

假设您有一个程序,您可以在其中定义多个size_type类型的变量,并将其定义为某个int

然后,通过分析和反思,你意识到变量永远不会假设值超过1万。因此,用于分配这些变量的32位有点过分。在这种情况下,您可以将size_type重新定义为short类型,而不是int。因此,你最终会节省一些记忆。

关于示例,您可以查看clock_tchar16_t, char32_t, wchar_ttrue_typefalse_type