C++模板类

类模板是C++中的泛型编程工具,用于处理不同数据类型但结构相同的情况。它们在编译时实例化,不占运行时空间。模板类与函数模板的区别在于类模板无法进行自动类型推导,可以设置默认参数并允许隐式类型转化。模板类继承包括父类为一般类、子类为模板类,子类为一般类、父类为模板类,以及两者都是模板类的情况。在子类和父类都是模板类时,子类的类型参数可以传递给父类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

目录

前言

类模板

模板类继承 


前言

    随着c++发展,有一部分代码就会出现这样的情况:实现的内容相同,但是参数不同。模板类就是为解决这类情况来的,是一种泛型编码。即与数据类型无关的通用程序设计技术。

    模板类本身不占空间,当编译器执行到模板类参数调用时,在赋予其具体的数据类型并且调用后才会占用空间。

类模板

    为什么要使用类模板:

        类模板和函数目模板的定义类似,有时两个或多个类的内容相同但是只是数据类型不同,为了方便我们可以套用类模板。

    类模板与函数模板的区别

    1、类模板一般情况下无法进行自动类型推导的调用

    2、类模板在模板参数列表可以有默认参数:

        比如:template<class T = int>  //这里的int就是默认的参数类型

    3、类模板在有默认参数类型时,可以发生隐式类型转化

    类模板定义:由模板说明和类说明构成

        template<类型形式参数表>

    例如:

template<typename T> //格式,typename也可以用class代替
class A{
public:
	A(T t=0){
		this->t = t;
	}
	T& getT(){
		return t;
	}
private:
	T t;
};

  

模板类继承 

    ·父类时一般类,子类是模板类

    和普通继承相似

class A{ //父类,一般类
public:
	A(int a = 0){
		this->a = a;
	}
	~A(){}
private:
	int a;
};

template<typename T>
class B :public A{
public:
	B(T t = 0) :A(6){
		this->t = t;
	}
	~B(){}
private:
	T t;
};

    ·子类为一般类,父类为模板类

    继承时必须在子类里实例化父类的类型参数

template<typename T>
class A{ //父类为模板类
public:
	A(T t = 0){
		this->t = t;
	}
	~A(){}
private:
	T t;
};

class B:public A<int>{ //子类,一般类
public:
	B(int b = 0){
		this->b = b;
	}
	~B(){}
private:
	int b;
};

    ·子类和父类都是模板类

    在这种情况下,子类的虚拟的类型可以传递到父类中。

 

   

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值