zoukankan      html  css  js  c++  java
  • C++中的模版

    模板程序设计的基本概念:

    编写不依赖于具体数据类型的程序

    将算法从特定的数据结构中抽象出来,成为通用的

    C++的模板为模板程序设计奠定了关键的基础

    函数模板:

    由于重载函数的功能相同,仅参数类型不同。若能对重载函数的参数类型做抽象表达,即使用统一形式表达,则可以大大简化源程序。

    函数模板的定义格式

    Template<class (typename)T1,class T2,………>

    返回值类型  函数名(参数裂变){

    函数体

    格式说明:

    Template:关键字,用于定义模板。

    一对尖括号:界定模板的参数列表。

    class (或typename):关键字,用于定义抽象类型T(也可以用其他标识符表示)。

    模板参数表可包含多个类型参数,参数间用逗号分隔。T1、T2等表示抽象类型

    函数模板:通过数据类型的参数化,把一组重载函数表示成统一的形式,即函数模板是对一组重载函数的抽象。

    模板函数:将函数模板中的抽象类型用具体的数据类型(如int,float,double等)替代后产生的函数

    函数模板的使用:

    例如:

    #include<iostream>

    Using namespace std;

    //定义函数模板

    Template<class T>

    void swap(T&x,T&y)

    {

           T t=x ;

           x=y ;

           y=t ;

    }

    int main()

    {

    swap(m,n) ;

    cout<<m<< ‘,’<<n<<endl ;

    return 0 ;

    }

    函数模板代表一类函数,必须将其模版参数实例化,才能产生具体函数,供实际调用。这一过程在编译时完成,不会影响程序的运行效率。其过程如下:

    1、  先根据函数调用的实参类型int,确定模板实参类型为int ;

    2、再将模板实参类型int传给模板形参,产生模板函数:void swap(T&x,T&y)

    之后如果再遇到相同类型的调用,则直接使用该函数模板,而不产生新的模板函数。

    类模板:

    实际编程时常涉及一组类,它们的成员组成相同,成员函数的代码形式相同,所不同的只是某些数据成员的类型。例如

    class IntStack{

    int buf[100];

    public:

     void push(int);

     int pop();

    ………..

    };

    class DoubleStack{

    double buf[100];

    public:

           void push(double) ;

           double pop() ;

           ............

    };

    我们可以用类模版将数据类型参数化,将类模版统一描述。

    类模版定义的格式:

    template<模板参数表> //模板声明

    class 类名{               //类的定义

    ................                   //成员

     ;

    例:

    Template <class T,class I>

    class Stack{

           T buffer[I];

           int top;

    public:

           Stack(){top=0;}

           void Push(T&item);

           T Pop();

    };

    说明:模板参数分为类型参数或非类型参数。类型参数用class或typename说明。

    I为非类型参数

    T为类型参数

    在类模版定义体中,可在指定类型的地方使用类型参数,在使用表达式的地方使用非类型参数。在类内定义类模版成员函数的地方与普通类一样。

    在类模板外定义类模板的成员函数:

    先进行模板声明

    再用类模板名来限定函数名

  • 相关阅读:
    Microsoft Azure 微软云平台系列新品发布
    python学习笔记(三)
    python学习笔记(一)
    python GUI编程(tkinter)
    python Tkinter之Button
    tkinter比较常用的组件
    tkinter窗口系列之一——列表框
    tkinter模块中常用的参数
    python的字符串操作函数之一览
    python之闭包
  • 原文地址:https://www.cnblogs.com/jiajuanjuan0521/p/3428314.html
Copyright © 2011-2022 走看看