函数模板

定义:带有类型参数的函数
格式:

template<class T1,class T2,....> //也可以是typename
<返回值类型><函数名>(<参数表>){......
}

T1、T2是函数模板的类型参数
使用函数模板定义的函数时需要提供具体类型,返回值类型,参数表中的参数类型以及函数体中的局部变量的类型可以是T1,T2等。示例:

template<class T>
void sort(T elements[], unsigned int count){}

函数模板定义了一系列重载的函数,首先必须要对函数模板进行实例化(生成具体的函数),函数模板的实例化通常是隐式的,有时需要在程序中显式地实例化函数模板。示例:

#include <iostream>
using namespace std;template<class T>
Swap(T &x, T &y){T tmp=x;x=y;y=tmp;
}int main(){int a=1,b=2;double c=1.1,d=1.2;Swap(a,b); //隐式实例化cout<<a<<" "<<b<<endl; Swap<double>(c,d);//显式实例化cout<<c<<" "<<d<<endl;return 0;
}

函数模板的偏特化、特化:

template<class T1, class T2>
void func(T1 a,T2 b){cout<<"default"<<endl;
}
//特化:全部模板参数特化
template<>
void func(double a,int b){count<<"double int"<<endl;
}
//偏特化:部分函数模板参数特化
template<class T2>
void func(float a,T2 b){cout<<"flaot"<<endl;
}

类模板

定义:如果一个类的成员的类型可变,则称为类属性
格式:

template<class T1, class T2, ...>
class <类名>{//类成员说明
}

与函数模板不同的是,类模板只能进行显式的实例化。如果有需要,可与模板函数结合,利用模板函数隐式实例化模板类。

类模板中的静态成员:

#include<iostream>
using namespace std;template<class T>
class A{public:static int x;
};template<class T>
int A<T>::x=12;int main(){A<int> a1,a2;//a1和a2共享一个xA<double>b1,b2;//b1和b2共享一个xcout<<a1.x<<endl;cout<<a2.x<<endl;b1.x=15;cout<<b1.x<<endl;cout<<b2.x<<endl;return 0;
}

C++中的类属(泛型)机制——模板相关推荐

  1. C++中的类模板详细讲述

    一.类模板定义及实例化 1. 定义一个类模板: 1 template<class 模板参数表> 2 3 class 类名{ 4 5 // 类定义...... 6 7 }: 其中,templ ...

  2. C++类中的虚函数不能为模板函数

    C++类中的虚函数不能为模板函数 首先,理解模板的原理.例如,定义了一个模板函数: template<typename A> void Func(const A& a) {    ...

  3. C/Cpp / 模板类中可以使用虚函数吗?模板成员函数可以是虚函数吗?

    一.答案 前者是可以的,后者是不可以的. #include <iostream>template <class T> class Base { public:virtual v ...

  4. Java 中,类、类对象、泛型之间的转换

    Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...

  5. 08自定义异常类的两个例子(例子2为异常在继承中的应用,且包含模板类的应用)

    08自定义异常类的两个例子 前提: 自定义异常两步曲: 1)提供一个接收char*的构造函数. 2)重写异常基类exception的两个虚函数-what()和析构(返回值类型忘记可以查看基类) 注意: ...

  6. 程序员常用的泛型机制究竟怎么玩?

    作者 | 朱钢,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:CSDNnews) 开发人员会经常用到泛型,并且大部分开发人员都会很好的使用泛型.泛型需要底层运行时的支持 ...

  7. Python3中的类和实例

    1.类和实例 类是抽象的模板,实例是根据类创建出来的一个个具体的"对象".例如:动物是一大类,猫.狗.鱼等都是特定的对象,即实例.python3中使用class关键字来定义类,基本 ...

  8. 结合泛型与模板的STL.NET

    开始之前,先来看一个笑话,当问一个C++程序员怎样完成一个给定的任务时,他(她)可能会提供一打或更多的潜在解决方案列表,但又会极其详细地标出每种方案的问题之处,让你不知所措,难以选择.而Visual ...

  9. java泛型机制_Java泛型机制必要性及原理解析

    泛型程序设计(Generic Programming) "使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性.泛型对于集合类尤 ...

最新文章

  1. 分享几段祖传的Python代码,拿来直接使用!
  2. 分布式与人工智能课程(part13)--模型验证
  3. ie模版字符串_字符串模板、模板字符串、Vue中使用template等等。
  4. bootstrap中让图片自适应不同的分辨率的方法
  5. Oracle的重做日志
  6. NO.109 禅道“红火”新年小礼,祝大家2014红红火火~~
  7. PyCharm入门使用教程-最强版本
  8. 解决Maven项目pom文件中出现的错误:“Missing artifact oracle:ojdbc7:jar:12.1.0.2.0:compile“
  9. 免费的身份证归属地查询接口
  10. 关于美图秀秀的flash在线版
  11. WebSphere性能调优
  12. 九宫格拼图小游戏开发笔记-随机网格生成
  13. mysql获取年月日周季度
  14. 通过宝塔面板,定时清除Docker日志空间
  15. 梦幻西游两个不同服务器的名字出现在跨服华山,系统会怎么处理,梦幻西游跨服决战华山测试报告【攻略达人】...
  16. java merlin_Merlin 给 Java 平台带来了非阻塞 I/O
  17. html获取text输入框中的值
  18. Gaussian量子化学计算、LAMMPS分子动力学模拟
  19. 1017 A除以B(C语言)
  20. 进程与进程描述符(task_struct)

热门文章

  1. SpringBoot 统一时区的方案
  2. MySQL数据库开发常见问题及几点优化!
  3. 2017-2018-1 20155202 《信息安全系统设计基础》第9周学习总结
  4. 程序员的周末:纯野的一天
  5. 视觉惯性SLAM: VI ORB-SLAM
  6. linux如何查看内存最大的几个文件,详解Linux如何查看当前占用CPU或内存最多的几个进程...
  7. usaco Sorting a Three-Valued Sequence 三值的排序
  8. python beautifulsoup模拟点击_Python爬虫丨BeautifulSoup实践
  9. android 多版本打包,Android build.gradle版本名打包配置的方法
  10. python import io_详解Python IO编程