• 一个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++笔记--模板的更多相关文章

  1. 《深入浅出WPF》笔记——模板篇

    原文:<深入浅出WPF>笔记--模板篇 我们通常说的模板是用来参照的,同样在WPF中,模板是用来作为制作控件的参照. 一.认识模板 1.1WPF菜鸟看模板 前面的记录有提过,控件主要是算法 ...

  2. 用html和css轻松实现康奈尔笔记(5R笔记)模板

    缘起 人家都说康奈尔笔记法,很好用呢,能抵抗遗忘曲线,让你的笔记事半功倍,有兴趣的同学自行百度哈. 网上有很多现成的模板,下载下来之后吧,看着好像在上面写英文可能更方便一点,行距很小,而且还有网址在上 ...

  3. Django笔记 —— 模板高级进阶

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  4. Django笔记 —— 模板

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  5. django项目班笔记-模板抽取

    目录 一.将前端静态文件放置到项目文件目录 二.模板设置 三.将静态文件拖放到项目对应目录 四.检查HTML文件中的应用是否自动更改了 4.1 文件引用没有改变的解决方法 4.2 设置static文件 ...

  6. 学习笔记——模板模式Template

    模板模式,主要是利用多态来实现具体算法和父类逻辑的松耦合.父类中TemplateMethod内部定义了相应的算法操作顺序,子类负责实现相应的具体实现. 举例: 项目中曾遇到过一个需求,叫做高级价格体系 ...

  7. django学习笔记-模板层

    模板层 将Python嵌入到HTML中. 模板简介 将HTML硬解码到视图并不是那么完美原因如下: 对页面设计时也需要对python代码进行相应的修改,模板可以不就行python代码修改的情况下变更设 ...

  8. <玩转Django2.0>读书笔记:模板和模型

    1. 模板内置标签 Django常用内置标签 标签 描述 {% for %} 遍历输出变量的内容 {% if %} 对变量进行条件判断 {% csrf_token %} 生成csrf_token标签, ...

  9. es6学习笔记--模板字符串

    这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...

  10. C++ Primer 笔记——模板与泛型编程

    1.编译器用推断出的模板参数来为我们实例化一个特定版本的函数. 2.每个类型参数前必须使用关键字class或typename.在模板参数列表中,这两个关键字含义相同,可以互换使用,也可以同时使用. t ...

随机推荐

  1. BZOJ - 2243 染色 (树链剖分+线段树+区间合并)

    题目链接 线段树维护区间连续段个数即可.设lc为区间左端点颜色,rc为区间右端点颜色,则合并两区间的时候,如果左区间右端点和右区间左端点颜色相同,则连续段个数-1. 在树链上的区间合并可以定义一个结构 ...

  2. 463. Island Perimeter Add to List

    You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...

  3. 【LeetCode】009. Palindrome Number

    Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negativ ...

  4. linux NTP配置

    时间是由计算机内的石英晶体振荡电路以:NetworkTimeProtocol(NTP):通常情况下,时间同步是按以下步骤进行的::(1):NTP客 户端向NTP服务器发出一个时间请:(2):当服务器接 ...

  5. Java基础--注解Annotation

    Annotation是给类,方法或域上加的一种特殊的标记,可以通过反射取到注解的类型和值,从而完成某种特定的操作. 定义注解需要使用元注解,元注解有@Retention和@Target //@Rete ...

  6. spring学习十二 application/x-www-form-urlencoded还是application/json

    application/x-www-form-urlencoded还是application/json get. POST 用哪种格式? 后台如何得到这些值? 如何用ajax  或者是 postman ...

  7. Python函数(五)-高阶函数

    函数接收的参数可以是数字,字符串,列表,元组,字典,集合,也可以是另一个函数,那么这个接收一个函数作为参数的函数就称为高阶函数 # -*- coding:utf-8 -*- __author__ = ...

  8. rsync 同步mac机器目录数据到windows2008R2

    openssh rsync -azvP --progress -e "ssh -p 6099" /ahwater/rsync/ ahwater@ip:/ahwater

  9. 具有避障和寻线功能的Arduino小车

    标签:  Arduino  乐高  机器人 创客对于成年人来说,多半是科技娱乐,或者是一种是一种向往科技的人生态度,总是希望自己不仅可以看到或者听到科技的资讯,还希望能够亲身制作科技玩意,从而更好地体 ...

  10. leetcode423

    public class Solution { public string OriginalDigits(string s) { ]; ; i < s.Length; i++) { char c ...