c++函数模板(c++细节篇十)
函数模板
函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。
声明方法:
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++细节篇十)相关推荐
- 【博弈】SG函数模板 nyoj913取石子(十)
SG函数模板 源于http://www.cnblogs.com/frog112111/p/3199780.html 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算, ...
- 构造函数与折构函数(c++细节篇五)
构造函数 默认构造函数仅实现对对象的数据成员的复制. 2. 默认构造函数的形参必须是对类的对象的引用. 构造函数难点之类中含有其他类的对象 1.写构造函数时 对象成员必须通过初始化列表的形式进行初始化 ...
- Template 基础篇-函数模板
====================================================|| 欢迎讨论技术的可以相互加微信:windgs (请备注csdn+xx职业) ======== ...
- 第十二届_国赛蓝桥杯个人模板_基础篇
第十二届_国赛蓝桥杯个人模板_网格图_DFS/BFS篇 第十二届_国赛蓝桥杯个人模板_全排列_DFS/BFS篇 第十二届_国赛蓝桥杯个人模板_DP篇 第十二届_国赛蓝桥杯个人模板_数论篇 第十二届_国 ...
- c++远征之模板篇——函数模板、类模板
以下内容源于慕课网的学习整理,如有侵权,请告知删除. 函数模板(vs模板函数) 1.为什么需要模板? 函数体相同,只是类型不一样而已. 那么能否把数据的类型当做参数传递呢?肯定是可以的,这是模板. 2 ...
- C++11 学习笔记 模板的细节(右尖括号,using,函数模板默认参数)
一.模板的右尖括号 在C++98/03的泛型编程中,模板实例化有一个很繁琐的地方,就是连续两个右尖括号(>>)会被编译解释成右移操作符,而不是模板参数表的形式.即 <span sty ...
- 暑假计算机培训心得体会,暑期培训心得体会模板集锦10篇
暑期培训心得体会模板集锦10篇 我们得到了一些心得体会以后,可用写心得体会的方式将其记录下来,这样有利于我们不断提升自我.那么写心得体会要注意的内容有什么呢?下面是小编整理的暑期培训心得体会10篇,欢 ...
- C++_static,类模板、函数模板、namespace
C++_static,类模板.函数模板.namespace 1.static 2.类模板 3.函数模板 4.namespace 5.深入,更多细节 参考:侯捷<C++面向对象高级编程>
- C++编程进阶7(何时使用成员函数模板,模板类的实参推断与类型转换、继承与数组)
二十六.何时使用成员函数模板 关于成员函数模板见https://blog.csdn.net/Master_Cui/article/details/111824152 成员函数模板主要用来兼容不同类型的 ...
最新文章
- Twiiter,下一个热点
- mysql中的字符匹配查询
- linux 修改文件名_Linux常用命令
- 动手学无人驾驶(5):多传感器数据融合
- Google 向 Android 开发者支付了 800 亿美元,却仍不及苹果!
- UVA10375 POJ2613 ZOJ1863 Choose and divide【组合计算+迭代】
- 基于内容的图像检索系统(合集)
- bzoj 1663: [Usaco2006 Open]赶集(最长路)
- 24. Element namespaceURI 属性
- Eclipse 优化
- 计算机网络知识点总结-第二章:物理层
- veeam_backup的几种备份方式
- 宇枫资本你需要了解的三个理财点
- Linux第一次月考小总结
- Flutter中的ISOlate
- Mac删除软件之后图标还在怎么办?
- kolla-ansible openstack登录 证书不可用
- 《H3C交换机常用命令》——【华三交换机常用配置及维护命令技能】
- 程序开发语言的应用领域
- 推荐几个海外优秀的新闻网站[中文]
热门文章
- python的tell和seek_python文件对象的seek和tell
- ubuntu 交叉编译 armv7_32 ffmpeg x264(已完成)
- C语言 (条件编译#ifdef、#ifndef) (#if 常量,#if 1,#if 0)的用法
- python 如何将字符串数字列表转换成数字列表,如何将数字列表转换成字符串数字列表?map(eval,list(str))
- 利用卷积神经网络提取特征
- 前端HTML、JavaScript、CSS技术的日常记录
- mysql的存储过程基本使用
- 大庆东风中学高考成绩查询2021年,2021年大庆中考成绩和分数线什么时候公布(附查询入口)...
- 开始使用Jenkins
- android控制音量加减命令 python_盘点5种基于Python生成的个性化语音方法