zoukankan      html  css  js  c++  java
  • 类模板 与 模板类


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

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

    // 类模板;
    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();
    }
    
    
  • 相关阅读:
    pyCharm专业版下载以及永久破解2099年过期
    win10安装最新的python3解释器
    Ubuntu软件源更换
    Ubuntu安装软件命令
    Target runtime Apache Tomcat 6.0 is not defined
    ajaxFileUpload 报这错jQuery.handleError is not a function
    怎样编写高质量的Java代码
    java 内存监控工具 jstat jmap
    jquery中attr和prop的区别
    javax.mail.MessagingException: 501 Syntax: HELO hostname
  • 原文地址:https://www.cnblogs.com/vagabond/p/5073702.html
Copyright © 2011-2022 走看看