C++的类模板

什么是类模板

是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。
模板的类型参数由关键字class 或关键字typename 及其后的标识符构成。在模板参数表中关键字class 和typename 的意义相同。(在标准C++之前关键字typename 没有被支持 ,把这个关键字加入到C++中的原因是因为有时必须要靠它来指导编译器解释模板定义。)
大致类型:

定义类模板的一般形式是:
template <类型名 参数名1,类型名 参数名2,…>
class 类名
{
类声明体
};
例如,template <class T>
class Smemory
{…
public:
void input(T x);
…
}
表示定义一个名为Smemory的类模板,其中带类型参数T。
在类模板的外部定义类成员函数的一般形式是:
template <类型名 参数名1,类型名 参数名2,…>
函数返回值类型 类名<参数名 1 参数名 2,…>::成员函数名(形参表)
{
函数体
}
例如:template <class T>
void Smemory<T>::input(T x)
{…}
表示定义一个类模板Smemory的成员函数,函数名为mput,形参x的类型是T,函数无返回值。
类模板是一个类家族的抽象,它只是对类的描述,编译程序不为类模板(包括成员函数定义)创建程序代码,
但是通过对类模板的实例化可以生成一个具体的类以及该具体类的对象。

我的尝试

#ifndef _HEAD_
#define _HEAD_

#include <iostream>
template< typename A>
class test
{

public:
	test(A a,A b);
	~test();
	
	A add();
	A sub();

private:
	A x;
	A y;
};


#endif

template<typename T>
test<T>::test(T a,T b)
{
	this->x = a;
	this->y = b;
}

template<typename T>
test<T>::~test()
{
	this->x = 0;
	this->y = 0;
}

template<typename T>
T test<T>::add()
{
	return x + y;
}
template<typename T>
T test<T>::sub()
{
	return x - y;
}

int main()
{
	
	test<double> A(9.6,10.36);
	std::cout << A.add() << " " <<std::endl;	
	double x = A.sub();
	std::cout << x << std::endl;

	system("pause");
	return 0;
}

结果

double:
这里写图片描述

int:
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值