今日学习:C++进阶day2部分
函数模板与模板函数
类型参数化,编写代码可以忽略类型
template<class T>
template<typename T>
template只对下面的第一个函数有效
1.自动类型推导
Myswap(a,b);
编译器根据你传的的值,进行类型自动推导
2.显式指定类型
Myswap<int>(a,b);
函数模板不能进行自动类型转换,必须严格类型匹配
函数模板和普通函数在一起调用规则:
- 函数模板可以像普通函数那样被重载
- C++编译器优先考虑普通函数
- 如果函数模板可以产生一个更好的匹配,那么选择模板
- 可以通过空模板实参列表的语法限定编译器只能通过模板匹配
模板函数实现原理
函数模板通过具体调用会生成一个模板函数,函数模板不能被调用
类模板
函数模板在调用的时候,可以自动类型推导
类模板必须显式指定类型
template<class T>
class Person{
public:
Person(T id,T age){