gpt4 book ai didi

c++ - traits 类是如何工作的,它们有什么作用?

转载 作者:可可西里 更新时间:2023-11-01 18:00:13 25 4
gpt4 key购买 nike

我正在阅读 Scott Meyers 的 Effective C++ .他在谈论特征类,我知道我需要它们在编译期间确定对象的类型,但我无法理解他对这些类的实际作用的解释? (从技术角度)

最佳答案

也许您期待某种让类型特征发挥作用的魔法。在那种情况下,请失望——没有魔法。类型特征是手动为每种类型定义的。例如,考虑 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> 中的某处实际上有一个显式定义 header ,内容如下:

template <typename T>
struct iterator_traits<T*> {
typedef T value_type;
// …
};

这是 iterator_traits部分特化 type 形式的类型 T* ,即一些通用类型的指针。

同理,iterator_traits专门用于其他迭代器,例如typename vector<T>::iterator .

关于c++ - traits 类是如何工作的,它们有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7284956/

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