函数模板
语法
template<typename type1>
type1 ave(type1 a,type1 b,type c)
{
type1 d = 2*c;
return (a+b+c+d)/3;
}
std::cout<<ave(1,2,3);
std::cout<<ave(1.0f , 2.0f , 3.0f);
//std::cout<<(1, 2.9f , 3);
最后一条语句不能编译,因为类型不符合
显示指定类型
std::cout<<ave<int>(1,2.0f,3);
这里显示指定了int类型,后面的参数都会转成int型
思考
template <typename type1>
type1 ave(type1 a, type1 b)
{
a = b;
return 0;
}
int main()
{
int a{ 100 };
int b{ 200 };
int la{ a };
int lb{ b };
ave(la, lb);
std::cout<<a;
}
为什么这里的a不改变??
编译器推断出的type1类型并非是整型引用int&,而是int