首页 > 其他分享 >类模板与继承

类模板与继承

时间:2024-12-07 17:54:00浏览次数:3  
标签:继承 子类 class Base 父类 public 模板

当模板碰到继承时,需要注意以下几点:
当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型
如果不指定,编译器无法给子类分配内存
如果想灵活指定出父类中T的类型,子类也需变为模板
示例:

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

//类模板与继承
template<class T>
class Base
{
    T m;
};
//class Son:public Base//error,必须要知道父类中的T类型,才能继承子类
class Son:public Base<int>
{
    
};
void test01()
{
    Son s1;
}
//如果想灵活指定父类中T类型,子类也需要变类模板
template<class T1,class T2>
class Son2:public Base<T2>
{
public:
    Son2()
    {
        cout<<"T1的数据类型为:"<<typeid(T1).name()<<endl;
        cout<<"T2的数据类型为:"<<typeid(T2).name()<<endl;
    }
    T1 obj;
};
void test02()
{
    Son2<int,char>S2;
}
int main() 
{
    //test01();
   test02();
    return 0;
}

总结:
如果父类是类模板,子类需要指定出父类中T的类型

标签:继承,子类,class,Base,父类,public,模板
From: https://www.cnblogs.com/RX1Ri/p/18592463

相关文章

  • 实验五 继承和多态
    实验任务3:task3.cpp和pets.hpp的源码,运行测试结果如下#pragmaonce#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classMachinePets{private:stringnickname;public:MachinePets(conststring&......
  • 实验五 继承和多态
    Task1.cpp1#include"publisher.hpp"2#include<vector>3#include<typeinfo>45usingstd::vector;67voidtest(){8vector<Publisher*>v;910v.push_back(newBook("HarryPotter","J.K.......
  • 实验五 继承和多态
    实验任务1:(1)代码部分:1#pragmaonce23#include<iostream>4#include<string>56usingstd::cout;7usingstd::endl;8usingstd::string;910//发行/出版物类:Publisher(抽象类)11classPublisher{12public:13Publisher......
  • 类模板对象做函数参数
    学习目标:类模板实例化出的对象,向函数传参的方式一共有三种传入方式:1.指定传入的类型=直接显示对象的数据类型2.参数模板化=将对象中的参数变为模板进行传递3.整个类模板化===将这个对象类型模板化进行传递#include<iostream>usingnamespacestd;#include<string>//......
  • 细数适合使用模板的十大行业
    移动支付给大家生活带来便利的同时,也促使更多商家开始了数字化转型,越来越多的商家及企业开始使用模板软件进行线上交易,那么,哪些行业可以直接使用模板软件呢?带大家详细了解下吧!餐饮行业:餐饮行业可以通过模板软件快速搭建点餐、外卖、预约、会员管理等功能的小程序。例如,点餐小......
  • gofiber: 模板:同名的参数会被覆盖
    一,代码1,go代码//用户登录func(uc*UserController)UserLogin(c*fiber.Ctx)error{ //返回map1 myMap1:=fiber.Map{} myMap1["name"]="老刘" myMap1["title"]="植物造林" err1:=c.Bind(myMap1) iferr1!=nil{ returnc.SendStr......
  • 类模板
    类模板语法类模板作用:建立一个通用类,类中的成员数据类型可以不具体指定,用一个虚拟的类型来代表语法:template<typenameT>类解释:template---声明创建模板typename---表面其后面的符号是一种数据类型,可以用class代替T---通用的数据类型,名称可以替换,通常为大写字母示例:#i......
  • 模板的局限性
    局限性:模板的通用性并不是万能的例如:template<typenameT>voidf(Ta,Tb){a=b;}在上述代码中提供的赋值操作,如果传入的a和b是一个数组,就无法实现了再例如:template<typenameT>voidf(Ta,Tb){if(a>b){.....}}在上述代码中,如......
  • 普通函数与函数模板调用规则2
    2.可以通过空模板参数列表强制调用函数模板voidmyPrint(inta,intb){cout<<"调用的是普通函数"<<endl;}template<typenameT>voidmyPrint(Ta,Tb){cout<<"调用的模板"<<endl;}voidtest01(){inta=10;intb=20;......
  • 实验5 继承和多态
    task1代码1#pragmaonce2#include<iostream>3#include<string>4usingstd::cout;5usingstd::endl;6usingstd::string;7//发行/出版物类:Publisher(抽象类)8classPublisher{9public:10Publisher(conststring&s="&qu......