精华内容
下载资源
问答
  • 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。 如果一个类中数据成员...

    一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。
    如果一个类中数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的、实际的类,而是代表着一类类。

    //templatedemo.h
    #ifndef TEMPLATE_DEMO_HXX
    #define TEMPLATE_DEMO_HXX

    template <class T>
    class test
    {
      public:
        test(){};
        T add(T a,T b);
    };
    #endif


    //templatedemo.cpp
    #include <iostream>
    #include "templatedemo.h"

    template<class T>
    T test<T>::add(T a,T b)
    {
      return a+b;
    }

    int main()
    {
      test<int> a;
      test<double> d;
      std::cout<<a.add(2,3)<<std::endl;
      std::cout<<d.add(5.0,6.1)<<std::endl;

      return 0;
    }

     

    转载于:https://www.cnblogs.com/cclhf/p/4721290.html

    展开全文
  • C++模板和模板

    2019-11-10 22:36:06
    1、c++的Template中的很多地方typename与class...(1)一个类模板(类生成类)允许用户为类定义一种模式,使得类中的某些数据成员,默认成员函数的参数,某些成员函数的返回值,取得任意类型(包括预定义和用户自定义的)...

    1、c++的Template中的很多地方typename与class这两个关键字

     template<typename T>在模板定义语法中关键字class与typename的作用完全一样

     

    2、类模板和模板类的概念

    (1)一个类模板(类生成类)允许用户为类定义一种模式,使得类中的某些数据成员,默认成员函数的参数,某些成员函数的返回值,取得任意类型(包括预定义和用户自定义的)

    2、如果一个类中的数据成员的数据类型不能确定,或者某一个成员函数的参数或者返回值的类型不能确定,必须将此类声明为模板,它的存在不是代表了一个具体的、实际的类,而是代表了一类;

    类模板定义:

    定义一个类模板,一般有两方面的内容

    A、首先要定义一个类,格式为

     template <class T>

     class Test

    {

     …..

    }

     test 为类名,在类定义体中,如果采用通用的数据类型的成员,函数参数的前面需要加上T,其中通用类型T可以作为普通成员变量的类型。还可以作为成员函数的参数和返回值类型。

    例如

     

    template<class T>

    class Test

    {

    private:

         T n;

         const T i;

    public:

     Test():i(0){};

     Test(T k);

     ~Test(){}

     

     void print();:

     T operator+(T x);

     

    };

    如果在类外定义成员函数,若此函数中有模板参数存在,则除了需要和一般类的类外定义成员函数一样的定义外, 还需要再函数外进行模板声明

     

     

    template<class T>

    Test<T>::Test(T k):i(k){n = k;}

    template<class T>

    T Test<T>::operator+(T x){

            return n + x;

    }

     

    template<class T>

    Test<T>::Test(T k):i(k){n = k;}

    template<class T>

    T Test<T>::operator+(T x){

            return n + x;

    }

    关于类模板的使用:类模板的使用实际上是将类模板实例化成具体的类,它的格式为:类名<实际的类型>

     

    展开全文
  • 模板 与 模板

    2019-09-26 11:48:51
    一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)模板类是类模板实例化后的...

    一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)

    模板类是类模板实例化后的一个产物。说个形象点的例子吧。我把类模板比作一个做饼干同的模子,而模板类就是用这个模子做出来的饼干,至于这个饼干是什么味道的就要看你自己在实例化时用的是什么材料了,你可以做巧克力饼干,也可以做豆沙饼干,这些饼干的除了材料不一样外,其他的东西都是一样的了。

    // 类模板;
    template<class T>
    class Base{
    public:
        explicit Base():m_t(0){}
        explicit Base(T t):m_t(t){}
        T getT() const {     return m_t;   }
        Base<T> sum(const Base<T> &);
        T& operator=(const Base<T> &);  // this -
        T m_t;
    };
    
    
    
    
    
    
    template<class T>
    T& Base<T>::operator=(const Base<T> &t){
        this->m_t = t.getT();
        return *this;
    }
    
    
    template<class T>
    Base<T> Base<T>::sum(const Base<T> &t){
         this->m_t += t.getT();
         return *this;
    }
    
    
    
    
    // 从类模板派生非模板类
    
    
    class Deriveint:public Base<int>  // 实例化特定类;
    {
    public:
        explicit Deriveint(int c):Base(c){} ;
    
    
    
    
    };
    
    
    //从类模板派生类模板可以从类模板派生出新的类模板
    template<class T>
    class Derive:public Base<T>
    {
    public:
        explicit Derive(T t):Base<T>(t){  } ;
    
    
    
    
    };





    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
    
    
    
    
    
    
    
        Base<int>  base(12);
        qDebug() << base.getT() << endl;
    
    
    
    
        Derive<double> cd(3.43);
        qDebug() <<  cd.getT() ;
    
    
        Derive<double> c = cd ;
    
    
        qDebug() <<  c.getT() ;
    
    
    
    
        c.sum(cd);
        qDebug() <<  c.getT() ;
    
    
        return a.exec();
    }
    
    

    转载于:https://www.cnblogs.com/vagabond/p/5073702.html

    展开全文
  • 模板与模板

    2017-02-03 11:08:11
    一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。 如果一个类中数据...
    1.类模板与模板类的概念

    ⑴ 什么是类模板

    一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。

    如果一个类中数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的、实际的类,而是代表着一类类。

    ⑵ 类模板定义 定义一个类模板,一般有两方面的内容:

    A.首先要定义类,其格式为:

    template

    class foo

    {

    ……

    }

    foo 为类名,在类定义体中,如采用通用数据类型的成员,函数参数的前面需加上T,其中通用类型T可以作为普通成员变量的类型,还可以作为const和static成员变量以及成员函数的参数和返回类型之用。例如:

    template

    class Test{

    private:

    T n;

    const T i;

    static T cnt;

    public:

    Test():i(0){}

    Test(T k);

    ~Test(){}

    void print();

    T operator (T x);

    };

    B. 在类定义体外定义成员函数时,若此成员函数中有模板参数存在,则除了需要和一般类的体外定义成员函数一样的定义外,还需在函数体外进行模板声明

    例如

    template

    void Test::print(){

    std::cout<<"n="<<n<<std::endl;

    std::cout<<"i="<<i<<std::endl;

    std::cout<<"cnt="<<cnt<<std::endl;



    }

    如果函数是以通用类型为返回类型,则要在函数名前的类名后缀上“”。例如:

    template

    Test::Test(T k):i(k){n=k;cnt ;}

    template

    T Test::operator (T x){

    return n x;

    }

    C. 在类定义体外初始化const成员和static成员变量的做法和普通类体外初始化const成员和static成员变量的做法基本上是一样的,唯一的区别是需在对模板进行声明,例如

    template

    int Test::cnt=0;

    template

    Test::Test(T k):i(k){n=k;cnt ;}

    ⑶ 类模板的使用 类模板的使用实际上是将类模板实例化成一个具体的类,它的格式为:类名<实际的类型>。

    模板类是类模板实例化后的一个产物。说个形象点的例子吧。我把类模板比作一个做饼干同的模子,而模板类就是用这个模子做出来的饼干,至于这个饼干是什么味道的就要看你自己在实例化时用的是什么材料了,你可以做巧克力饼干,也可以做豆沙饼干,这些饼干的除了材料不一样外,其他的东西都是一样的了。

    2.类模板的派生

    可以从类模板派生出新的类,既可以派生类模板,也可以派生非模板类。派生方法:

    ⑴ 从类模板派生类模板可以从类模板派生出新的类模板,它的派生格式如下例所示:

    template

    class base

    {

    ……

    };

    template

    class derive:public base

    {

    ……

    };

    与一般的类派生定义相似,只是在指出它的基类时要缀上模板参数,即base。

    ⑵ 从类模板派生非模板类 可以从类模板派生出非模板类,在派生中,作为非模板类的基类,必须是类模板实例化后的模板类,并且在定义派生类前不需要模板声明语句:template。例如:

    template

    class base

    {

    ……

    };

    class derive:public base

    {

    ……

    };

    在定义derive类时,base已实例化成了int型的模板类。

    展开全文
  • 模版

    2015-07-26 21:53:43
    (1) 什么是类模板: 一个类模板允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能够取任意类型(包括系统预定义的和用户自定义的)。 如果一个类中数据成员的数据...
  • 模板与模板

    2016-10-21 10:12:53
    ⑴ 什么是类模板 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。...
  •  一个类模板允许用户为类定义一种模式,使得类中的某些数据成员、默认成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)  如果一个类中数据成员的数据类型不能确定、或者...
  • 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。  如果一个类中数据...
  • ⑴ 什么是类模板 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。...
  • ⑴ 什么是类模板 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。...
  • 模板

    2014-02-14 21:28:40
    ⑴ 什么是类模板 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。...
  • 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。如果一个类中数据成员的...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 234
精华内容 93
关键字:

允许用户为类定义一种模式