#include<iostream> //1. 标准模板类。 template<typename T1, typename T2> class MyClass { public: MyClass(){ std::cout<<" type 1. \n"; } }; //2. 两个模板参数具有相同类型的部分特化类。 template<typename T> class MyClass<T,T> { public: MyClass(){ std::cout<<" type 2. \n"; } }; //3. 第二个类型参数是int template<typename T> class MyClass<T,int> { public: MyClass(){ std::cout<<" type 3. \n"; } }; //4. 两个模板参数都是指针。 template<typename T1,typename T2> class MyClass<T1*,T2*> { public: MyClass(){ std::cout<<" type 4. \n"; } }; //5. 两个模板参数都是相同类型的指针。 template<typename T> class MyClass<T*,T*> { public: MyClass(){ std::cout<<" type 5. \n"; } }; //6. 调用示例代码。 int main() { MyClass<int,float> c1; //调用MyClass<T1,T2> MyClass<float,float> c2; //调用MyClass<T,T> MyClass<float,int> c3; //调用MyClass<T,int> MyClass<int*,float*> c4; //调用MyClass<T1*,T2*> MyClass<int*,int*> c5; //调用MyClass<T*,T*> MyClass<int,int> c6; // 调用MyClass<T,T> or 调用MyClass<T,int> , 报错:[Error] ambiguous class template instantiation for 'class MyClass<int, int>' return 0; }
c++ 模板类特化
猜你喜欢
转载自javaeye-hanlingbo.iteye.com/blog/2407800
今日推荐
周排行