// ============================================================================ // p1c05_02 — 5.3 函数模板和普通函数区别 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; // --- 原文片段 [58954472:1] 5.3 函数模板和普通函数区别 --- //函数模板 template T MyPlus_1(T a, T b){ T ret = a + b; return ret; } //普通函数 int MyPlus_1(int a,char b){ int ret = a + b; return ret; } void test02(){ int a = 10; char b = 'a'; //调用函数模板,严格匹配类型 MyPlus_1(a, a); MyPlus_1(b, b); //调用普通函数 MyPlus_1(a, b); //调用普通函数 普通函数可以隐式类型转换 MyPlus_1(b, a); //结论: //函数模板不允许自动类型转换,必须严格匹配类型 //普通函数可以进行自动类型转换 } // --- main --- int main() { test02(); return 0; }