C++模板类

 

目录

前言

类模板

模板类继承 


前言

    随着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;
};

    ·子类和父类都是模板类

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

 

   

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值