• c++ 泛型编程之类模板


    c++ 泛型编程之类模板

    1.定义:是对一批仅成员数据类型(成员函数和程序数据)不同的类的抽象。程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类。

    2.语法

    //类模板定义格式
    template <<模板参数表>>//模板参数表里面是要用几个抽象参数
    class <类模板名>
    {
    	<成员函数与成员变量>
    };
    
    //成员函数在类外定义格式
    template <<模板参数表>>
    <返回值类型><类模板名><<模板参数名列表>>::<成员函数名>(<参数表>)
    {
    	<函数体>
    }
    
    //类模板定义对象
    类模板名<真实类型参数表>对象名(构造函数实际参数表)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.原理

    (1)编译器由类模板生成类的过程叫做类模板的实例化;

    (2)编译器自动用具体的数据类型替换类模板中的类型参数,生成模板类的代码;

    (3)由类模板实例化得到的类叫做模板类;

    4.示例

    
    
    
    • 1
    • 2

    5.二次编译机制

    (1)在编译器进行编译的时候,编译器会产生类的模板函数的声明,当时实际确认类型后调用的时候,会根据调用的类型进行再次帮我们生成对应类型的函数声明和定义。

    (2)在编译器进行编译的时候,编译器会产生类的模板函数的声明,当时实际确认类型后调用的时候,会根据调用的类型进行再次帮我们生成对应类型的函数声明和定义。解决方案:类的前置声明;友元模板函数的前置声明;友元模板函数声明需要增加泛型支持。

    6.类模板与非类型参数

    (1)语法

    template <class T,int elementsNumber>
    
    • 1

    (2)限制

    ①整数
    ②枚举类型
    ③指针指向的对象不能在指针所定义的文件中定义,必须在别的文件中定义
    ④不能是浮点类型,不能是类类型!

    (3)示例

    
    
    • 1
  • 相关阅读:
    Anti-C-Myc Antibody (Chicken) - FITC Conjugated
    【安全函数】常用的安全函数的使用
    求导的扫盲
    前端软件快捷键集合
    python接口自动化测试之接口数据依赖
    【算法】过桥
    插入排序:简单而有效的排序方法
    面试、工作中常用sql大全(建议收藏备用)
    基于SSM的旅游网站系统
    PLC面向对象编程系列之如何设计分解状态机(FSM)的状态
  • 原文地址:https://blog.csdn.net/jun8086/article/details/127642133