模板特化
在将萃取机制之前,先要说明模板特化
当有两个模板类,一个是通用泛型模板,一个是特殊类型模板,如果创建一个特殊类型的对象,会优先调用特殊的类型模板类,例如:
template <typename T> //泛型模板
class MyClass
{
public:
MyClass()
{
cout << "T MyClass!" << endl;
}
~MyClass()
{
cout << "~T MyClass!" << endl;
}
};
template<>
class MyClass<int> //全特化模板
{
public:
MyClass()
{
cout << "int MyClass!" << endl;
}
~MyClass()
{
cout << "~int MyClass!" << endl;
}
};
int main()
{
MyClass<char> mc0;
MyClass<int> mc1;
return 0;
}
运行结果:
T MyClass!
int MyClass!
~int MyClass!
~T MyClass!