6.类模板与继承


一.概述:

当类模板碰到继承时,需要注意以下几点:

  •     当子类继承的父类是一个类模板时,子类在声名的时候要指定出父类中T的类型
  •     如果不指定编译器,无法给子类分配内存
  •     如果想灵活指定出父类中t的类型,子类也是变为类模板

    
示例一:

template<class T>
class Base
{
    public:
        T base;
};

//class Son:public Base //不对, C++编译需要给子类分配内存,必须知道父类中T的类型才可以向下继承
class Son:public Base<int> //必须指定一个类型
{
   
};


示例二:

#include<iostream>
#include<string>
using namespace std;

template<class T>
class Base
{
    public:
        T base;
};

//如果想灵活指定父类中T的类型,子类也需要变类模板
template <class T1,class T2>
class Son:public Base<T2>
{
    public:
    T1 obj;
};

void test()
{
    Son<int,char> s;
    cout << "obj的类型为: "<< typeid(s.obj).name() << endl;
    cout << "base的类型为: "<< typeid(s.base).name() << endl;
    
}

int main()
{
    test();
    return 0;
}

运行结果:

obj的类型为: int
base的类型为: char

相关推荐

  1. 6.模板继承

    2024-02-20 12:30:07       30 阅读
  2. 模板继承及成员、全局函数的实现

    2024-02-20 12:30:07       21 阅读
  3. Flask 入门6模板继承

    2024-02-20 12:30:07       30 阅读
  4. C++继承基础3——访问控制继承

    2024-02-20 12:30:07       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-20 12:30:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-20 12:30:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-20 12:30:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-20 12:30:07       20 阅读

热门阅读

  1. AIAG & VDA FMEA的变化有哪些——FMEA软件

    2024-02-20 12:30:07       29 阅读
  2. 如何优化Docker镜像的大小?

    2024-02-20 12:30:07       26 阅读
  3. 机器人仓库搬砖

    2024-02-20 12:30:07       35 阅读
  4. Linux文件监控方法

    2024-02-20 12:30:07       31 阅读
  5. 沼泽地问题

    2024-02-20 12:30:07       27 阅读