C++函数模板的显式具体化

/*
功能:C++模板的显式具体化练习。
常规模板:add加法模板,采用显式具体化模板方式,具体化一个复数相加的add函数。
总结:显式具体化是针对常规模板进行的,因此必须与常规模板的定义格式相符合。如下程序所示,除Any类型可以用一个具体化的C++类型
   替换外,其它应该保持与常规模板一致,否则可能不能进行编译
编译环境:Visual Studio 2008
*/

#include <iostream>

//声明常规函数模板原型
template <typename Any>
Any add(const Any &a,const Any &b);
//定义表示复数的结构
struct complex
{
 double real; //实部
 double imaginary; //虚部
};
//声明显示具体化函数原型
template <> complex add(const complex &,const complex &);

using namespace std;
int main(void)
{
 complex sc1 = {23.11,12.33};
 complex sc2 = {24.61,15.39};
 complex addSc = add(sc1,sc2);

 cout << "(sc1 + sc2) .real = " << addSc.real ;
 cout << ", (sc1 + sc2) .imaginary = " << addSc.imaginary << endl; ;
 return 0;
}
template <typename Any>
Any add(const Any a,const Any b)
{
 return a + b;
}

template <> complex add(const complex &ca,const complex &cb)
{
 static complex sComplex;
 sComplex.real = ca.real + cb.real;
 sComplex.imaginary = ca.imaginary + cb.imaginary;

 return sComplex;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值