函数模板
函数模板必须严格类型匹配,普通函数则可以进行数据类型隐式转换 对于内置数据类型,函数模板可进行推导,自定义类型不可以 函数模板可被重载 C++ 编译器优先考虑普通函数 可以通过空模板实参列表的语法限定编译器只能通过模板匹配 如果函数模板可以产生一个更好的匹配,就选择模板 编译器根据函数模板调用情况,从函数模板和具体类型产生不同的函数 编译器会对函数模板进行两次编译 在声明的地方对模板代码本身进行编译; 在调用的地方对参数替换后的代码进行编译 template<class T> T MyAdd(T a, T b){ return a + b; } // 函数一 int MyAdd(int a, int b){ return a + b; } // 函数二 int MyAdd(int a, char c){ return a + c; } int main() { cout << MyAdd(1, 2) << endl; // 优先调用普通函数 cout << MyAdd<>(1, 2) << endl; // 强制调用模板函数 cout << MyAdd(1....