C++ 模板

1.模板简介

#include <iostream>
#include <string>

using namespace std;

/*int max(int a, int b)
{
	return a > b ? a : b;
}

float max(float a, float b)
{
	return a > b ? a : b;
}*/

template <typename T>
T& max(T t1, T t2)
{
	cout << "template function" << endl;
	return (t1 > t2 ? t1 : t2);
}

int main()
{

	int m = max(1,2);
	cout << m << endl;

	float n = (3.14,3.15);
	cout << n << endl;

	system("pause");
	return 0;

}

2.函数模板

1.模板是c++的高级特性,分为函数模板和类模板,使用模板可以快速创建类型集合和函数集合,大大提高了大规模软件开发的效率。

2.语法格式

#include <iostream>
#include <string>

using namespace std;


template <typename T>   
T sum(T t1, T t2)
{
	cout << "template function" << endl;
	return t1+t2;
}

int main()
{
	int s = sum(1,2);
	float f = sum(1.2,1.3);
	cout << s << "," << f << endl;

	int s2 = sum<int>(2,3.3);
	cout << s2 << endl;

	system("pause");
	return 0;

}

其实宏定义也可以完成上述功能,但是宏定义是简单文本替换,并不对其进行类型检查,不安全。

3.类模板

1.使用template不仅可以定义函数模板,还可以定义类模板,类模板表示一族类,是用来描述通用数据类型或者处理方法的机制,它使类中的一些成员变量和成员函数的参数或返回值可以取任何类型的数据。

2.类模板的声明和语法格式。

template <类型形式参数表> class 类模板名称

{

//类模板

}

成员函数声明语法

template <类型形式参数表>

返回类型  类模板名称<类型名称表>::成员函数名称{形式参数列表}

{

//函数体

}

 

#include <iostream>
#include <string>

using namespace std;


template <typename T1,typename T2>   
class MyClass
{
private:
	T1 t1;
	T2 t2;
public:
	MyClass(T1 t1, T2 t2) :t1(t1), t2(t2){};
	void display(){ cout << t1 << "," << t2 << endl; };
};

int main()
{
	MyClass<int, double> myclass(100,3.3);
	myclass.display();

	MyClass<string, int> myclass2("a",4);
	myclass2.display();

	system("pause");
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值