博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++笔记--模板
阅读量:4684 次
发布时间:2019-06-09

本文共 1861 字,大约阅读时间需要 6 分钟。

  • 一个string模板
    •   简单的定义
      1 template 
      //模板形式,C是一个类型名字,不一定是某个类的名字 2 class String{ 3 struct srep; 4 srep *rep; 5 public: 6 String(); 7 String(const C*); 8 String(const String&); 9 10 C read(int i)const;11 };
      String 
      cs;//这些是使用的方法,模板的一些定义String
      us;String
      ws;class Jchar{};String
      js;

      标准库里面有一个base_string模板,很像string模板,所以把前者也是定义为string的同义词:typedef base_string<char>string;

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

 

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

 

转载于:https://www.cnblogs.com/Kobe10/p/5558469.html

你可能感兴趣的文章
python会缓存小的整数和短小的字符
查看>>
格网与四叉树索引
查看>>
多张照片拍摄、图片浏览
查看>>
html(5) css
查看>>
Azure Web连接到Azure MySql Db
查看>>
Linux shell 命令判断执行语法 ; , && , ||
查看>>
vim代码格式化插件clang-format
查看>>
RTP Payload Format for Transport of MPEG-4 Elementary Streams over http
查看>>
Java环境变量设置
查看>>
【JBPM4】判断节点decision 方法3 handler
查看>>
filter 过滤器(监听)
查看>>
c语言基础知识要点
查看>>
node启动时, listen EADDRINUSE 报错;
查看>>
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
kafka中的消费组
查看>>
python--注释
查看>>
前端资源链接 ...
查看>>
yum install ntp 报错:Error: Package: ntp-4.2.6p5-25.el7.centos.2.x86_64 (base)
查看>>
leetcode-Single Number-136
查看>>
CF715C Digit Tree
查看>>