gpt4 book ai didi

C++ 类型后缀 _t、_type 或无

转载 作者:IT老高 更新时间:2023-10-28 21:42:11 31 4
gpt4 key购买 nike

C++ 有时使用后缀 _type关于类型定义(例如 std::vector<T>::value_type ),有时_t (例如 std::size_t ),或者没有后缀(普通类,还有像 std::string 这样的类型定义,实际上是 std::basic_string<...> )

对于何时使用哪个名称有什么好的约定吗?

最佳答案

正如@MarcoA. 的回答正确指出的那样,后缀 _t很大程度上继承自 C(并且在全局命名空间中 - 为 POSIX 保留)。

这给我们留下了“无后缀”和_type .

请注意 std 中没有命名空间范围名称以 _type 结尾*;所有这些名称都是类和类模板的成员(或者,在与正则表达式相关的类型的情况下,是嵌套命名空间的成员,该命名空间主要扮演类的角色)。我认为这就是区别:类型本身不使用 _type后缀。

后缀_type仅用于表示类型的成员,此外,通常当它们表示包含类的某种“外部”类型时。比较 std::vector<T>::value_typestd::vector<T>::size_type ,来自 vector 的模板参数TAllocator ,分别针对std::vector<T>::iterator ,这是 vector 类模板的“内在”。


* 不完全正确,有几个这样的名字(@jrok 在评论中也指出了):common_type , underlying_type , is_literal_type , true_type , false_type .在前三个中,_type不是真正的后缀,它是名称的实际部分(例如,一个 metafunction 用于给出通用 type 或底层 type)。与 true_typefalse_type , 它确实是一个后缀(因为 truefalse 是保留字)。我会说它是一个 type,它代表基于类型的元编程意义上的真/假值。

关于C++ 类型后缀 _t、_type 或无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26400352/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com