C++笔记--模板
- 一个string模板
- 简单的定义
template <class C>//模板形式,C是一个类型名字,不一定是某个类的名字
class String{
struct srep;
srep *rep;
public:
String();
String(const C*);
String(const String&); C read(int i)const;
};String <char > cs;//这些是使用的方法,模板的一些定义
String <unsigned char> us;
String <wchar_t>ws;
class Jchar{
};
String <Jchar>js;标准库里面有一个base_string模板,很像string模板,所以把前者也是定义为string的同义词:typedef base_string<char>string;
- 定义一个模板:通常我们是先写一个完整的类,然后再去把它转变为模板类,这样可以避免很多不必要的错误。
- 定义模板类的成员:不必非得定义在模板类中,可以定义在模板外,但是必须显式的定义他们,他们的参数也是模板化的
template <class C> struct String<C>::srep{
C *s;//到元素的指针
int sz;//元素个数
int n;//引用计数
}
template <class C> C String <C> ::read(int i)const{return rep->s[i];} - 通常类模板的名字是不能重载的,如果一个地方定义了一个类模板,它的名字就不能用来去定义一个相同的名字的普通类。
- 定义模板类的成员:不必非得定义在模板类中,可以定义在模板外,但是必须显式的定义他们,他们的参数也是模板化的
- 模板实例化:从一个模板类和一个模板参数生成一个类声明的过程;而针对一个特定的模板参数的模板成为专门化。
-
String <char> cs;//这里生成了两个类,cs和js,以及他们的析构和构造函数
void f(){
String<Jchar> js;
}
-
- 模板参数:一个模板可以有多个参数,一个模板参数可以定义跟随其后的模板参数。
- 类型等价,类型检查:与模板参数有关的错误能被检查出来的最早的位置是在:这个模板针对这个参数第一个使用的地方。称为实例化点
- 简单的定义
- 函数模板
- 函数模板的参数:如果不能从模板函数推断出某个模板参数,就只能显示的描述。

- 函数模板的重载
- 可以声明同一个名字的多个函数模板。还可以声明同名的函数和函数模板的组合。
-

- 重载解析规则
-
- 重载解析规则
- 用模板参数描述策略
- 默认模板参数:只有一些不是很平常的比较算法才需显示给出。
- 模板专门化:
- 模板和派生:
- 一个模板类派生出另一个模板类
-
template <class T> class Vector {};
template <class T>class Vec:public Vector<T>{};
-
- 参数化和继承
- 虚函数提供的东西叫做运行时多态,模板提供的东西叫做编译时多态。(如果在这些对象间不需要某种层次性的东西(从属关系),就用模板;如果在编译时无法确定参数类型,就用抽象继承。
- 模板类里面的复制赋值函数都必=必须是非模板类的,并且成员模板不能是virtual;

C++笔记--模板的更多相关文章
- 《深入浅出WPF》笔记——模板篇
原文:<深入浅出WPF>笔记--模板篇 我们通常说的模板是用来参照的,同样在WPF中,模板是用来作为制作控件的参照. 一.认识模板 1.1WPF菜鸟看模板 前面的记录有提过,控件主要是算法 ...
- 用html和css轻松实现康奈尔笔记(5R笔记)模板
缘起 人家都说康奈尔笔记法,很好用呢,能抵抗遗忘曲线,让你的笔记事半功倍,有兴趣的同学自行百度哈. 网上有很多现成的模板,下载下来之后吧,看着好像在上面写英文可能更方便一点,行距很小,而且还有网址在上 ...
- Django笔记 —— 模板高级进阶
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django笔记 —— 模板
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- django项目班笔记-模板抽取
目录 一.将前端静态文件放置到项目文件目录 二.模板设置 三.将静态文件拖放到项目对应目录 四.检查HTML文件中的应用是否自动更改了 4.1 文件引用没有改变的解决方法 4.2 设置static文件 ...
- 学习笔记——模板模式Template
模板模式,主要是利用多态来实现具体算法和父类逻辑的松耦合.父类中TemplateMethod内部定义了相应的算法操作顺序,子类负责实现相应的具体实现. 举例: 项目中曾遇到过一个需求,叫做高级价格体系 ...
- django学习笔记-模板层
模板层 将Python嵌入到HTML中. 模板简介 将HTML硬解码到视图并不是那么完美原因如下: 对页面设计时也需要对python代码进行相应的修改,模板可以不就行python代码修改的情况下变更设 ...
- <玩转Django2.0>读书笔记:模板和模型
1. 模板内置标签 Django常用内置标签 标签 描述 {% for %} 遍历输出变量的内容 {% if %} 对变量进行条件判断 {% csrf_token %} 生成csrf_token标签, ...
- es6学习笔记--模板字符串
这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...
- C++ Primer 笔记——模板与泛型编程
1.编译器用推断出的模板参数来为我们实例化一个特定版本的函数. 2.每个类型参数前必须使用关键字class或typename.在模板参数列表中,这两个关键字含义相同,可以互换使用,也可以同时使用. t ...
随机推荐
- UOJ#454. 【UER #8】打雪仗
UOJ#454. [UER #8]打雪仗 http://uoj.ac/problem/454 分析: 好玩的通信题~ 把序列分成三块,\(bob\)先发出这三块中询问点最多的一块给\(alice\). ...
- 系列文章----.Net程序员学用Oracle系列
.Net程序员学用Oracle系列(18):PLSQL Developer 攻略 .Net程序员学用Oracle系列(17):数据库管理工具(SQL Plus) .Net程序员学用Oracle系列(1 ...
- bat显示多行文字,逐个显示哦!不同的颜色!
最近想修改bat文件输出提示的时候能有不同的颜色提示,在网上找了下,发现这个文章,实现的不错,先记录下来,留着后面研究. 这是曾经写的,又稍微改进了一下. @echo off set str=青天有月 ...
- Python函数-callable()
callable(object) 作用: 检查对象object是否可调用.如果返回True,object仍然可能调用失败:但如果返回False,调用对象ojbect绝对不会成功. 注意: 类是可调用的 ...
- mysql5.6之 传输表空间迁移表或恢复误删除的表
一,简单说明: 1),传输表空间的限制: 1,mysql 版本 5.6.6 及其以上,并且版本建议源和目标版本建议都是GA版并且大版本一样 2,表引擎为innodb并且开启独立表空间 innod ...
- 快速沃尔什变换(FWT)学习笔记
概述 FWT的大体思路就是把要求的 C(x)=A(x)×B(x) 即 \( c[i]=\sum\limits_{j?k=i} (a[j]*b[k]) \) 变换成这样的:\( c^{'}[i]=a^ ...
- Python 函数之lambda、map、filter和reduce
1.lambda函数 lambda()是Python里的匿名函数,其语法如下: lambda [arg1[, arg2, ... argN]]: expression 学习条件运算时,对于简单的 if ...
- Zabbix通过SNMPv2监控DELL服务器的硬件信息
(一)zabbix监控DELL服务器 (1)简述:监控DELL服务器硬件一般有两种途径:1.操作系统上安装OMSA,编写脚本调用omreport命令进行监控(需要在操作系统上安装比较麻烦):2.使用i ...
- 日志分隔工具Cronolog
注:本文转载自 https://blog.csdn.net/weixin_38860565/article/details/81633234 Cronolog 分割 Tomcat8 Catalina. ...
- HDU5475(线段树)
An easy problem Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
