1、函数模板
template<typename T> void name (T ...)
其中typename也可以换成class。
(1)可以多参template<class T1, class T2>
(2)模板中形参名可以不必是唯一的。
(3)如果调用了一个带用户自定义类型的模板,并且该模板用到了函数或运算符,那么这些函数和运算符必须被这个用户定义类型重载,否则运行出错
(4)如果一个普通函数和一个函数模板特化跟调用函数匹配度相同,那么这个普通函数会被调用。
2、类模板
也叫参数类型。 template<typename T> class A {...}
使用: A<int> a;
(1)类模板的成员函数的定义就是函数模板,所以出现在类模板定义外的成员函数的定义一定要加template,如:
template<typename T> void A<T>::B(...)
(2)类模板的所有成员函数必须在头文件中实现,不能在.cpp文件中实现。否则调用这个函数时会报错“无法解析的外部符号”
3、非类型参数和默认类型参数
非类型参数(在类中可以使用)  template<typename T, int i>
默认类型参数                           template<typename T = string>
(1)有默认类型参数,使用时可以直接 A<> a 等同于 A<string> a
(2)默认类型参数必须在模板参数列表最右侧(尾部)。
当有多个默认类型参数,其中一个不在最右侧,那么该参数右边所有的参数都会被忽略。
注意这里与默认实参不同,默认实参不在最右侧会报错,而默认类型参数则不会。
4、显示特化
如果一个特定的用户定义类型不能使用类模板或者需要有特定的处理,那么久可以为这个特定类型定义一个现实的类模板特化。
template<> class A<Employee> {...}
新类会对原模板完全覆盖,它没有使用原来类模板的任何内容甚至可以包含不同的成员。
5、模板与继承
类模板可以从类模板特化派生得到
类模板可以从非类模板类派生得到
类模板特化可以从类模板特化派生得到
非类模板类可以从类模板特化派生得到
6、模板与友元
假设模板template<typename T> class X
友元1: friend void f1()       是X<double>,X<int>,X<...>等的友元
友元2:friend void f2(X<T> &)   那么f2(x<float> &)只是X<float>的友元
(1)可以将一个类的成员函数声明为一个类模板的友元,如:
friend void A::f3()            类A的f3函数是友元
7、模板和静态成员
每一个由相同类模板实例化产生的类模板特化都有它自己的类模板静态数据成员的副本。
一个模板类特化产生的所有对象都共享一个静态数据成员。
每个类模板特化都得到一份属于自己的类模板静态成员函数的副本。

 

c++学习笔记之模板相关推荐

  1. OpenCV 学习笔记(模板匹配)

    OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...

  2. D3D9学习笔记之模板

    学习目标: 理解模板缓存的工作原理,如何创建模板缓存以及如何对模板缓存进行控制 了解如何实现镜面效果,以及如何使用模板缓存阻止物体映像在非镜面区域中的绘制 掌握如何绘制阴影,以及如何借助模板缓存阻止& ...

  3. C++学习笔记【模板】

    主要内容来源:https://www.bilibili.com/video/BV1et411b73Z?spm_id_from=333.999.0.0 一.函数模板 1.函数模板的概念 template ...

  4. Python学习笔记——Flask模板

    目录 3.1 模板 3.2 过滤器: 3.3 Web表单: 3.4 控制语句 3.5 宏.继承.包含 3.6 Flask中的特殊变量和方法: 3.1 模板 在前面的示例中,视图函数的主要作用是生成请求 ...

  5. 黑马ajax学习笔记02--art-template模板,自动提示,防抖,三级联动,fromData传参及传文件,同源,jsonp,天气预报,CROS,服务器桥接,withCredential跨域登录

    1.模板引擎概述 作用:使用模板引擎提供的模板语法,可以将数据和HTML拼接起来 实际上是实现在客户端做数据拼接 art-template模板引擎 官网:http://aui.github.io/ar ...

  6. C++学习笔记:模板参数

    本章节主要学习一下模板形参的基本知识. 模板参数有三种类型:类型模板参数.模板的模板参数(以模板作为模板的参数).非类型模板参数. 类型模板参数 类型模板参数是我们使用模板的主要目的.也就是普通的类型 ...

  7. Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件

    一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看到项 ...

  8. Symfony2 学习笔记之模板使用

    我们知道,controller负责处理每一个进入Symfony2应用程序的请求.实际上,controller把大部分的繁重工作都委托给了其它地方,以使代码能够被测试和重用.当一个controller需 ...

  9. C++ Primer 学习笔记_75_模板与泛型编程 --模板定义

    模板与泛型编程 --模板定义 引言: 所谓泛型程序就是以独立于不论什么特定类型的方式编写代码.使用泛型程序时,我们须要提供详细程序实例所操作的类型或值. 模板是泛型编程的基础.使用模板时能够无须了解模 ...

  10. c++学习笔记之类模板

    类是对象的抽象,类模板是类的抽象. 比较两个数(不同类型)的大小 在类模板内定义成员函数 #include<iostream> using namespace std; template& ...

最新文章

  1. 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计
  2. exchange 2007 碰到NDR
  3. Android开发--详解ContentProvider/Cursor的使用
  4. Linux Shell编程实战---以逆序形式打印行
  5. 下一代防火墙信息收集(概念篇)
  6. 【转】Unity C# 调用C++ dll 问题集锦
  7. Oracle11g新特性注意事项
  8. myisam数据表根据frm文件恢复数据表
  9. java中抽象类继承抽象类_Java中的抽象类用示例解释
  10. maven中文乱码问题——编译错误
  11. python顺序结构代码_Python代码结构——顺序、分支、循环
  12. python字典没有长度限制_python-字典更新序列元素#0的长度为15; 2个为必填项
  13. 助成招聘网站——个人项目06
  14. zoj 3284 Matrix Processing(二维树状数组)
  15. C# Excel 读写数据
  16. c51汇编语言教程,汇编语言入门视频教程
  17. Telink TLSR8258DK开发板zigbee开发
  18. python中iter是什么意思_Python __iter__ 深入理解
  19. 微信小程序-时间轴/抽屉展开收起特效
  20. 科研卫星服务的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. shell里面比较大小
  2. 使用python移动飞信模块发送短信
  3. 面向对象的三大特征,封装、继承、多态的个人理解以及代码分析
  4. Zabbix 添加端口监控链接
  5. BZOJ3294 CQOI2011放棋子(动态规划)
  6. Source insight 支持汇编
  7. 操作系统开发系列—13.g.操作系统的系统调用 ●
  8. Effective C#(二)
  9. java的System.getProperty()方法能够获取的值
  10. 2011年 11月底-12月初 51Aspx源码发布详情