模板的类型的萃取:
主要就是将模板的类型中的系统内置类型与自定义类型分开
1.默认参数的方法
2.函数法
3.模板类的方法(一个一个类型区分)
模板的分离编译:
对于模板的编译来说,必须将实现与头文件放到一起,要不然的话就会出现如果将实现、main、头文件分开的话,调用实现的话会带着头问价一起调用,但是此时没有类型,会报错,反过来如果调用main函数的时候也会自动与头文件结合到一起,这个时候又没有代码实现,所以我们应该将实现与头文件放到一起
这样的作用是:维护起来方便、用起来爽
类型萃取举例:
#include <iostream>
using namespace std;
//类型萃取:将系统的内置类型与自定义类型区分开
class Truetype
{
public:
static bool get()
{
return true;
}
};
class Falsetype
{
public:
static bool get()
{
return false;
}
};
template <class T>
class typeTraits
{
public:
typedef Falsetype Jtype;
};
template <>
class typeTraits<int>
{
public:
typedef Truetype Jtype;
};
template <>
class typeTraits<float>
{
public:
typedef Truetype Jtype;
};
int main()
{
cout << typeTraits<int>::Jtype::get() << endl;
cout << typeTraits<double>::Jtype::get() << endl;
return 0;
}
2.类型的分离就不做代码示例了,反正就是会报找不到的错误