类模板

1.对于类模板来说,其功能是相同的,但数据类型是不同的。
2.关于类模板的声明和类模板对象的声明方法。
类模板声明:template<class 类型参数名>
类模板对象的声明:类模板名<实际类型名> 对象名(参数表列)
3.代码示例:

#include<iostream>
using namespace std;
template<class numtype>//声明一个类模板
class Compare
{
public:
	Compare(numtype a, numtype b)//定义构造函数
	{
		x = a; y = b;
	}
	numtype sum()//定义一个sum函数,用于求和,类型暂定为numtype
	{
		return x + y;
	}
private:
	numtype x;
	numtype y;
};
int main()
{
	Compare<int>c1(6, 6);//定义int型对象
	Compare<float>c2(6.5, 6.7);//定义float型对象
	cout << c1.sum() << endl;
	cout << c2.sum() << endl;
	return 0;
}

4.上面的代码块中,成员函数实在类模板内定义的,如果要在类模板外定义成员函数,则需要用特殊形式的方法定义类模板外函数。
如:
template<class 类型参数>
类型名 类模板名<类型名>::函数名()

代码示例如下:

#include<iostream>
using namespace std;
template<class numtype>//声明一个类模板
class Compare//定义一个类模板名
{
public:
	Compare(numtype a, numtype b)//定义有个构造函数
	{
		x = a; y = b;
	}
	numtype sum();//声明一个sum函数,返回类型为虚拟类型numtype
private:
	numtype x;
	numtype y;
};
template<class numtype>//在类外定义一个成员函数
numtype Compare<numtype>::sum()
{
	return x + y;
}
int main()
{
	Compare<int>c1(6, 6);//定义对象c1,并调用构造函数
	Compare<float>c2(6.5, 6.7);//定义对象c2,并调用构造函数
	cout << c1.sum() << endl;
	cout << c2.sum() << endl;
	return 0;
}

调试结果如下:
在这里插入图片描述
5.注意在类模板外定义一个成员函数时,别忘了声明类模板。
6.类模板的类型参数中的类型可以是两个以上,但每个类型前面都要加上class。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值