C++ 模板联系摘要
https://github.com/wuye9036/CppTemplateTutorial
本文就是给自己快速参阅回想用的,不一定适合别人看。
using namespace std;
template <typename T> class AddFloatOrMulInt
{
static T Do(T a, T b)
{
// 在这个例子里面一般形式里面是什么内容不重要,因为用不上
// 这里就随便给个0吧。
return T(0);
}
};
// 其次,我们要指定T是int时候的代码,这就是特化:
template <> class AddFloatOrMulInt<int>
{
public:
static int Do(int a, int b) //
{
return a * b;
}
};
// 再次,我们要指定T是float时候的代码:
template <> class AddFloatOrMulInt<float>
{
public:
static float Do(float a, float b)
{
return a + b;
}
};
int main()
{
int result = AddFloatOrMulInt<int>::Do(1,2);
cout<<result;
getchar();
return 0;
}
/*
我们再把特化的形式拿出来一瞧:这货有点怪啊: template <> class AddFloatOrMulInt<int>。别急,我给你解释一下。
// 我们这个模板的基本形式是什么?
template <typename T> class AddFloatOrMulInt;
// 但是这个类,是给T是Int的时候用的,于是我们写作
class AddFloatOrMulInt<int>
// 当然,这里编译是通不过的。
// 但是它又不是个普通类,而是类模板的一个特化(特例)。
// 所以前面要加模板关键字template,
// 以及模板参数列表
template < 这里要填什么? > class AddFloatOrMulInt<int>;
// 最后,模板参数列表里面填什么?因为原型的T已经被int取代了。所以这里就不能放任何额外的参数了。
// 所以这里要放空。
template <> class AddFloatOrMulInt<int>
{
// ... 针对Int的实现 ...
}
// Bingo!
*/
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。