我正在读斯科特·迈耶斯的书有效的C++ https://rads.stackoverflow.com/amzn/click/0321334876。他在谈论特征类,我明白我需要它们在编译时确定对象的类型,但我无法理解他对这些类实际上做什么的解释? (从技术角度)
也许你正在期待某种让类型特征发挥作用的魔法。在这种情况下,你会感到失望——没有魔法。类型特征是manually为每种类型定义。例如,考虑iterator_traits
,它提供了 typedef(例如value_type
) 对于迭代器。
使用它们,您可以编写
iterator_traits<vector<int>::iterator>::value_type x;
iterator_traits<int*>::value_type y;
// `x` and `y` have type int.
但要使这项工作有效,实际上有一个显式定义某处在<iterator>
标题,内容如下:
template <typename T>
struct iterator_traits<T*> {
typedef T value_type;
// …
};
这是一个部分专业化 of the iterator_traits
type 用于表单类型T*
,即某种泛型类型的指针。
同样,iterator_traits
专门用于其他迭代器,例如typename vector<T>::iterator
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)