c++函数模板
下面是代码:
- C/C++ code
#include<iostream>using namespace std;template<class T1,class T2>T1 add(T1 x,T2 y){ cout<<"("<<sizeof(T1)<<","<<sizeof(T2)<<")\t"; return x+y;}int main(){ cout<<add('A','A'-'0')<<endl; return 0;}运行结果:
<1,4> R
求怎么会得到R这个字符,请详解!
[解决办法]
'A'的ASC码为65
'0'的ASC码为48
'A'+'A'-'0'经过运算为65+65-48=82
ASC码82对应的字符就是'R'
[解决办法]
模板实参推断得到函数add的类型是char型,所以输出的是R而不是82