c++,模板函数的定义和使用【初探】
// demo.cpp : // 模版函数的定义和使用: // 1.模板支持返回参数类型为模板参数。 // template <typename RET_T , typename IN1_T , typename IN2_T > // RET_T prifunc2(IN1_T in1 , IN2_T in2) { ... } // 2.因为在函数调用时无法直接推断返回类型,所以可以显示的提供模板实参。prifunc2<double, int ,int> // 3.模板声明时RET_T放到第一位,使用时可以只提供返回值类型,而剩余的参数则按常规方式利用形参进行推断。prifunc2<double> #include<iostream> using namespace std; template <typename RET_T , typename IN1_T , typename IN2_T > RET_T prifunc2(IN1_T in1 , IN2_T in2) { RET_T ret; ret = in1 +in2; cout<<"in1 = "<<in1<<endl; cout<<"in2 = "<<in2<<endl; ret = in1+in2 ; cout<<"ret = "<<ret<<endl; return ret; } int main() { int v = prifunc2<double, int ,int>(11,22);//返回值放在第一位。 int vv = prifunc2<double>(33,44);//可以只提供返回值的声明,其他会自行推断出来。 while(1); return 0; } //测试结果: // in1 = 11 // in2 = 22 // ret = 33 // in1 = 33 // in2 = 44 // ret = 77
template <class RET, class T, class V, class X> RET func(T t, V v, X x, int i) { RET ret; cout<<"value="<<t<<endl; cout<<"value="<<v<<endl; cout<<"value="<<x<<endl; cout<<"value="<<i<<endl; ret = t; return ret; } void f2(void) { int i = 11; char c = 39; float f = 9.01; char* str = "hello"; char cstr[] = "haha"; char* p1 = func<char *>(str,c,f,i); char* p2 = func<char *>(str,cstr,c,i); cout<<"p1:"<<p1<<endl; cout<<"p2:"<<p2<<endl; /* value=hello value=' value=9.01 value=11 value=hello value=haha value=' value=11 p1:hello p2:hello 请按任意键继续. . . */ }