#include <iostream>
#include <typeinfo>
using namespace std;
template <typename T1, typename T2, typename T3>
class A
{
public:
A(){cout << typeid(*this).name() << " construction" << endl;}
~A(){}
T1 m_a1;
T2 m_a2;
T3 m_a3;
};
template <typename T1, typename T2>
class A<T1, T1, T2>
{
public:
A(){cout << typeid(*this).name() << " construction" << endl;}
~A(){}
T1 m_a1;
T2 m_a2;
};
template <typename T1>
class A<T1, T1, T1>
{
public:
A(){cout << typeid(*this).name() << " construction" << endl;}
~A(){}
T1 m_a1;
};
int main(void)
{
A<int, char, char *> a1;
A<int, int, char *> a2;
A<int, int, int> a3;
return 0;
}
运行结果:
A<int,char,char *> construction
A<int,char *> construction
A<int> construction
本文通过C++模板特化的具体实现案例,展示了如何根据不同类型的参数组合来改变类的行为。通过三个特化版本的类A,演示了从通用模板到特定类型组合的变化过程,并通过输出构造函数的信息验证了特化的效果。
2876

被折叠的 条评论
为什么被折叠?



