六大部件
模板
- 类模板
- 函数模板
- 成员模板(类拥有本身为类模板或函数模板的成员)
- 特化:优先选择特化版本
template<class T> struct __type_traits
{
...
};
template<> struct __type_traits<int>
{
...
};
template<> struct __type_traits<char>
{
...
};
....
- 偏特化
1. 限制部分参数类型
template<class T, class Alloc = alloc>
class vector
{
...
};
template<class Alloc = alloc>
class vector<bool, Alloc>
{
...
};
2.限制为指针、引用、常量等
template<class T> struct iterator_traits<T*>
{
...
};
template<class T> struct iterator_traits<const T*>
{
...
};
重载
不能被重载的操作符:
[1]?:
[2].
[3]::
[4]sizeof
[5].* (引用指向类成员的指针)
不能是非成员的重载函数:
[1]=
[2][]
[3]->