C++函数模板和普通函数的调用规则:

  1. 普通函数可以进行自动类型转换。

  2. 函数模板必须严格类型匹配。

  3. C++编译器优先考虑普通函数。

  4. 如果函数模板可以产生一个更好的匹配,那么选择模板。

  5. 可以通过空模板实参列表的语法限定编译器只能通过模板匹配。

代码如下:

#include <iostream>
using namespace std;template<typename T>
int myAdd(T a, T b)
{cout << "template function" << endl;return a + b;
}int myAdd(char a, char b)
{cout << "normal function" << endl;return a + b;
}void test01()
{int a = 10;int b = 20;char c1 = 'a';char c2 = 'b';myAdd(a, c1);myAdd(a, b);myAdd(c1, b);myAdd(a, b);myAdd(c1, c2);myAdd<>(c1, c2);
}int main()
{test01();return 0;
}

测试结果:

C++函数模板和普通函数的调用规则相关推荐

  1. 函数模板和普通函数区别

    /***Copyright (c) 2018 Young Fan.All Right Reserved.*Filename: 2 函数模板和普通函数区别*Author: Young Fan*Date: ...

  2. C++中函数模板template和函数参数为指针,且有返回值的结合使用

    1 #include<iostream> 2 using namespace std; 3 // 利用模板函数计算一个表达式 4 template<class Type> 5 ...

  3. C++ 普通函数与函数模板 区别以及调用规则01

    //普通函数 和 函数模板 区别 int myPlus(int a, int b) {return a + b; }template<class T> T myPlus2(T a, T b ...

  4. c++模板---1(模板概念,利用模板实现数组排序,函数模板调用规则)

    什么叫泛型编程?1. 参数类型化. 2. 模板 模板概念 c++提供了函数模板,所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表.这个通用函数就成为函数模 ...

  5. C++提高部分_C++普通函数与函数模板调用规则---C++语言工作笔记085

    然后我们再来看一下普通函数和函数模板的调用规则 可以看到有4个, 1.如果函数模板和普通函数都可以地调用的时候,优先调用普通函数 2.可以通过空模板参数列表,强制调用,函数模板 3.函数模板可以发生函 ...

  6. 模板 (函数模板语法 ,类模板与函数模板的区别,:函数模板案例,普通函数与函数模板的区别,普通函数与函数模板调用规则,模板的局限性,类模板分文件编写.cpp,Person.hpp,类模板与友元)

    **01:函数模板语法: #include<iostream> using namespace std;//交换两个整型函数 void swapInt(int &a ,int &a ...

  7. C++ 函数模板和排序的函数模板——学习笔记

    我们在使用重载函数时,只是使用了函数名,而函数体还是得分别定义,在C++中函数模板为我们很好的解决了这个问题. 1.函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函 ...

  8. [转]C++函数模板与模板函数

    1.函数模板的声明和模板函数的生成 1.1函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计.它的最大特点是把函数使用的数据类型作为参数. 函数模板 ...

  9. C++编程进阶7(何时使用成员函数模板,模板类的实参推断与类型转换、继承与数组)

    二十六.何时使用成员函数模板 关于成员函数模板见https://blog.csdn.net/Master_Cui/article/details/111824152 成员函数模板主要用来兼容不同类型的 ...

最新文章

  1. 如何快速而准确的获取生物体的遗传信息一直是生命科学 中的一个非常重要的研究点
  2. 为什么我们的web前端变的越来越复杂
  3. .NET的一点历史故事:作者的一些感想
  4. 运维编排场景系列----给实例加到SLS机器组
  5. uvc摄像头代码解析1
  6. 大数据对人们的好处_大数据有什么作用和优势
  7. Java中父子类引用的理解
  8. wpf webbrowser获取选中文本_网页文本高亮插件 web-marker
  9. 公式编辑器里面添加空格
  10. 我国计算机科学技术的成就,计算机科学技术百科全书
  11. Pytorch基础知识(7)单目标检测
  12. pixi.js 5.0_使用Pixi.js进行高级绘图
  13. 如何把微信公众号平台做成找券机器人并自动回复优惠券
  14. 国外的服务器国内可以直连吗,国内服务器和境外服务器有什么区别?
  15. C++ std::string::substr()
  16. 一文掌握华为全过程项目管理的方法步骤和具体动作【墙裂推荐】
  17. Grain加密代码求助
  18. 2020-08-14 理解 javascript 函数中的 curry
  19. 武汉大学计算机系王侃,武汉大学信息管理学院
  20. Voting mechanism

热门文章

  1. React-引领未来的用户界面开发框架-读书笔记(三)
  2. Android之如何实现阿拉伯版本(RTL)的recycleView的网格布局
  3. 用非递归方式实现二叉树后序遍历
  4. Android之多线程----异步消息处理机制之Handler详解
  5. C++入门指南及实战 第二步 HelloWorld及扩展详解
  6. 苹果android 对比,苹果安卓旗舰差距有多少?看了这份对比,果粉傻眼了
  7. linux创建目录目录文件,Linux创建目录和文件管理教程
  8. java junit4_JUnit4使用Java5中的单元测试
  9. matlab基于ssd的角点匹配_基于关键点的目标检测
  10. c语言随机数循环延迟,C语言生成随机数的函数、延时函数