C++类模板

1 篇文章 0 订阅
1 篇文章 0 订阅

1、类模板的作用

类是对一组对象的公共性质的抽象,而类模板则是对一组类的公共性质的抽象。

其类模板的主要作用是:为类声明了一种模式,使得类中的某些数据成员、成员函数的参数和成员函数的返回值能取任意类型。

假如有两个或多个类的功能相同,只是数据类型不同。

声明一个类,对两个整数作比较,通过调用成员函数max和min得到两个整数中最大数和最小数。

#include <iostream>
class Compare_int
{
public:
	Compare_int(int a, int b)
	{
		x = a; y = b;
	}
	int max()
	{
		return (x > y) ? x : y;
	}
	int min()
	{
		return (x > y) ? y : x;
	}
private:
	int x, y;
};
class Compare_float
{
public:
	Compare_float(float a, float b)
	{
		x = a; y = b;
	}
	float max() {
		return (x > y) ? x : y;
	}
	float min() {
		return (x > y) ? y : x;
	}
private:
	float x, y;
};

只是数据类型不一样,其他都一样,我们就可以使用类模板。这样可以提高代码的复用性。 

2、类模板的定义和使用

template <class 类型参数名 1, class 类型参数名 2,...>
class 类名 
{
    类声明体
};

例:将上面两个类写成以下的类模板:

#include <iostream>
template <calss T>//声明一个模板,虚拟类型名为T
class Compare //类模板为Complate
{
public:
	Compare(T a, T b)
	{
		x = a; y = b;
	}
	T max()
	{
		return (x > y) ? x : y;
	}
	T min()
	{
		return (x > y) ? y : x;
	}
private:
	T x, y;
};

类模板不是一个具体的、实际的类,而是代表一种类型的类。

与函数模板不同的是:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而模板的实例化必须由程序员在程序中显式的指定。

类名<实际的数据类型 1,实际的数据类型 2,...> 对象名
例:
Compare <int> cmp(4,7);                                                                       

假若我们要求两个int类型的数的最大值,但是调用的时候参数未必都是int类型的·,这时我们就得用函数模板。

#include <iostream>
using namespace std;
template <class T>
class Compare
{
public:
	Compare(T a, T b) {
		x = a; y = b;
	}
	T max() {
		return (x > y) ? x : y;
	}
	T min() {
		return (x > y) ? y : x;
	}
private:
	T x, y;
};
int main() {
	Compare<int> j(3, 4.5);
	cout << j.max() << endl;
	return 0;
}

输出 4

它把4.5强转为int类型了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值