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 ...
随机推荐
- freemarker实现第一个HelloWorld
第一步:引入freemarker jar包 第二步:创建templates下的test01.ftl 第三步:在web.xml下 第四步:编写后台代码 package com.wisezone.test ...
- SQL夯实基础(六):MqSql Explain
关系型数据库中,互联网相关行业使用最多的无疑是mysql,虽然我们C# Developer很多用的都是sql server ,但是学习一些mysql方面的知识也是必要的,他山之石么. 先上一个expl ...
- 5、Selenium+Python自动登录163邮箱发送邮件
1.Selenium实现自动化,需要定位元素,以下查看163邮箱的登录元素 (1)登录(定位到登录框,登录框是一个iframe,如果没有定位到iframe,是无法定位到账号框与密码框) 定位到邮箱框( ...
- Python 设计一个简单的计算器
设计目标 实现加减乘除及拓号优先级解析 用户输入'1 - 2 * ( (6-3 +(-5/5)*(9-2*3/3 + 7/3*7/4*12 +10 * 5/5 )) - (-4*3)/ (12-3*2 ...
- (转)C#正则表达式Regex类的用法
原文地址如下:http://www.studyofnet.com/news/297.html 一.C#正则表达式符号模式 字 符 描 述 \ 转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反 ...
- MySQL 查询数据表里面时间字段为今天添加的计数
一: 下面这条语句查出来的count值 . 查询类型ID(category_id)为18的,今天插入的数据数, created_on: 为数据表中一字段 datetime类型, 记录此条数据添加的时 ...
- 把python2.6升级到python2.7(同样适用于把python2升级到python3)
在启用https过程中,在生成CSR(证书请求文件)时,报错了,说python2.6已被python团队抛弃了,所以升级python到2.7 话不多说,直接上代码: 步骤1:下载python2.7.1 ...
- Day3-Python基础3---函数递归和函数式方程
一.函数的递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归特性: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应 ...
- MYSQL BENCHMARK()函数
MySQL有一个内置的BENCHMARK()函数,可以测试某些特定操作的执行速度. BENCHMARK(count,expr) BENCHMARK会重复计算expr表达式count次,通过这种方式就可 ...
- XXXAction-validation.xml文件中报错:Referenced file Contains errors
我们需要引用与验证器配置相关的dtd文件,这个文件可以在xwork-core-2.3.1.2.jar下找到(xwork-validator-1.0.3.dtd) 网上有很多处理办法,如下所示: 1.直 ...
