函数模板

函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。
声明方法:
template <typename 标识符>
函数声明。

例子:

#include<iostream>
using namespace std;
template<typename T>//T 是模板参数
T abs(T x)
{    return x<0?-x:x;    }int main()
{  int n=-5;double d=-5.5;cout<<abs(n)<<endl;cout<<abs(d)<<endl;
}

作用
使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,能取任意类型(包括基本类型的和用户自定义类型)。

函数模板的实例化

大致分为三种三种:1.隐式实例化。 2.显式实例化。 3.显示具体化。

显式实例化
声明格式:
template
类型说明符 函数名 <类型说明符>(参数列表)
<>中的类型说明符 是指定抽象数据类型实例化后的确切数据类型。
(也可以不声明 ,而是在调用时在函数名后用<类型说明符>指定抽象数据类型实例化后的确切数据类型也可)一般用在运算多个数据类型时

如上面的代码可以这样调用
abs<int>(n);

函数模板的显示具体化(用于无法进行正常计算时,如指针加减)
声明格式:
template <>
类型说明符 函数名 <类型说明符>(参数列表)
必须重新定义函数模板

函数版本的选择

1.普通函数:

例子:
int add(int x,int y)
{return x+y;
}

2.函数模板:

template <typename T>T add(T x,T y)
{return x+y;
}

3.函数模板的显示具体化:

template <>
int * add<int *>(int *x,int * y);

基本规则

1.非模板函数优先与模板函数。

2.函数模板中的显式具体化优先于隐式实例化。

3.转化少,更具体的函数模板优先。

c++函数模板(c++细节篇十)相关推荐

  1. 【博弈】SG函数模板 nyoj913取石子(十)

    SG函数模板 源于http://www.cnblogs.com/frog112111/p/3199780.html 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算, ...

  2. 构造函数与折构函数(c++细节篇五)

    构造函数 默认构造函数仅实现对对象的数据成员的复制. 2. 默认构造函数的形参必须是对类的对象的引用. 构造函数难点之类中含有其他类的对象 1.写构造函数时 对象成员必须通过初始化列表的形式进行初始化 ...

  3. Template 基础篇-函数模板

    ====================================================|| 欢迎讨论技术的可以相互加微信:windgs (请备注csdn+xx职业) ======== ...

  4. 第十二届_国赛蓝桥杯个人模板_基础篇

    第十二届_国赛蓝桥杯个人模板_网格图_DFS/BFS篇 第十二届_国赛蓝桥杯个人模板_全排列_DFS/BFS篇 第十二届_国赛蓝桥杯个人模板_DP篇 第十二届_国赛蓝桥杯个人模板_数论篇 第十二届_国 ...

  5. c++远征之模板篇——函数模板、类模板

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 函数模板(vs模板函数) 1.为什么需要模板? 函数体相同,只是类型不一样而已. 那么能否把数据的类型当做参数传递呢?肯定是可以的,这是模板. 2 ...

  6. C++11 学习笔记 模板的细节(右尖括号,using,函数模板默认参数)

    一.模板的右尖括号 在C++98/03的泛型编程中,模板实例化有一个很繁琐的地方,就是连续两个右尖括号(>>)会被编译解释成右移操作符,而不是模板参数表的形式.即 <span sty ...

  7. 暑假计算机培训心得体会,暑期培训心得体会模板集锦10篇

    暑期培训心得体会模板集锦10篇 我们得到了一些心得体会以后,可用写心得体会的方式将其记录下来,这样有利于我们不断提升自我.那么写心得体会要注意的内容有什么呢?下面是小编整理的暑期培训心得体会10篇,欢 ...

  8. C++_static,类模板、函数模板、namespace

    C++_static,类模板.函数模板.namespace 1.static 2.类模板 3.函数模板 4.namespace 5.深入,更多细节 参考:侯捷<C++面向对象高级编程>

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

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

最新文章

  1. Twiiter,下一个热点
  2. mysql中的字符匹配查询
  3. linux 修改文件名_Linux常用命令
  4. 动手学无人驾驶(5):多传感器数据融合
  5. Google 向 Android 开发者支付了 800 亿美元,却仍不及苹果!
  6. UVA10375 POJ2613 ZOJ1863 Choose and divide【组合计算+迭代】
  7. 基于内容的图像检索系统(合集)
  8. bzoj 1663: [Usaco2006 Open]赶集(最长路)
  9. 24. Element namespaceURI 属性
  10. Eclipse 优化
  11. 计算机网络知识点总结-第二章:物理层
  12. veeam_backup的几种备份方式
  13. 宇枫资本你需要了解的三个理财点
  14. Linux第一次月考小总结
  15. Flutter中的ISOlate
  16. Mac删除软件之后图标还在怎么办?
  17. kolla-ansible openstack登录 证书不可用
  18. 《H3C交换机常用命令》——【华三交换机常用配置及维护命令技能】
  19. 程序开发语言的应用领域
  20. 推荐几个海外优秀的新闻网站[中文]

热门文章

  1. python的tell和seek_python文件对象的seek和tell
  2. ubuntu 交叉编译 armv7_32 ffmpeg x264(已完成)
  3. C语言 (条件编译#ifdef、#ifndef) (#if 常量,#if 1,#if 0)的用法
  4. python 如何将字符串数字列表转换成数字列表,如何将数字列表转换成字符串数字列表?map(eval,list(str))
  5. 利用卷积神经网络提取特征
  6. 前端HTML、JavaScript、CSS技术的日常记录
  7. mysql的存储过程基本使用
  8. 大庆东风中学高考成绩查询2021年,2021年大庆中考成绩和分数线什么时候公布(附查询入口)...
  9. 开始使用Jenkins
  10. android控制音量加减命令 python_盘点5种基于Python生成的个性化语音方法