100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C++类模板特化全总结

C++类模板特化全总结

时间:2019-05-27 12:52:29

相关推荐

C++类模板特化全总结

//基础模板一template<typename T1, typename T2>class TestTemplateA {public:void Func() {printf("TestTemplateA: base\n");}};//注意下面这个模板并不是【基础模板一】的偏特化,编译会报错,因为它属于【基础模板一】的一种情况//特化或偏特化是指对类名后面的模板类型参数具体指定,而不是对template<>里的参数的具体指定//template<bool, typename T>//class TestTemplateA {//public:// void Func() {// printf("TestTemplateB: base\n");// }//};//偏特化1template<typename T2>class TestTemplateA<int, T2> {public:void Func() {printf("TestTemplateA: 偏特化1\n");}};//偏特化2template<typename T1, typename T2>class TestTemplateA<T1*, T2> {public:void Func() {printf("TestTemplateA: 偏特化2\n");}};//偏特化3template<typename T1, typename T2>class TestTemplateA<T1*, T2*> {public:void Func() {printf("TestTemplateA: 偏特化2\n");}};//偏特化4template<typename T1, typename T2>class TestTemplateA<T1*, T2&> {public:void Func() {printf("TestTemplateA: 偏特化3\n");}};//全特化template<>class TestTemplateA<int, float> {public:void Func() {printf("TestTemplateA: 全特化\n");}};//基础模板二template<bool, typename T>class TestTemplateB {public:void Func() {printf("TestTemplateB: base\n");}};//偏特化template<typename T>class TestTemplateB<false,T> {public:void Func() {printf("TestTemplateB: 偏特化\n");}};//全特化template<>class TestTemplateB<false, float> {public:void Func() {printf("TestTemplateB: 全特化\n");}};/** 基础模板三* 模板参数不仅可以传类型,也可以像函数一样传参数*/template<bool arg1, int arg2>class TestTemplateC {public:void Test() {printf("TestTemplateC: base, arg1= %d, arg2=%d\n", arg1, arg2);}};//偏特化template<int arg2>class TestTemplateC<false, arg2> {public:void Test() {printf("TestTemplateC:偏特化, arg2 = %d\n", arg2);}};//全特化,无意义template<>class TestTemplateC<false, 128> {public:void Test() {printf("TestTemplateC:全特化\n");}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。