零基础学C++之高级篇一

这篇博客详细介绍了C++中的模板概念,包括函数模板和类模板的定义、作用和使用方法。通过实例展示了如何定义函数模板、重载函数模板、类模板以及设置默认模板参数。还探讨了有界数组模板和链表类模板的应用,为程序员提供了掌握C++高级特性的实用指导。
摘要由CSDN通过智能技术生成

零基础学C++之高级篇一

模板

模板是C++的高级特性,分为函数模板和类模板。模板使程序员能够快速建立具有类型安全的类库集合和函数集合,它的实现大大方便了大规模软件开发。

函数模板

函数模板鄙视一个实在的函数,编译器不能为其生成可执行代码,函数模板只是一个对函数功能框架的描述,当它具体执行时将根据传递的实际参数决定其功能。

函数模板的定义

函数模板定义的一般形式如下:

template <类型形式参数表> 返回类型 函数名(参数表)
{
   
	...//函数体
}

template为关键字,表示定义一个模板,"<>"内为模板参数,模板参数主要有两种,一种是模板类型参数,另一种是模板非类型参数。

函数模板的作用

实例01 使用数组作为模板参数

#include <iostream>
using namespace std;
template <class type,int len>
type Max(type array[len])
{
   
	type ret = array[0];
	for(int i = 1; i < len ; i++)
	{
   
		ret = (ret > array[i]) ? ret : array[i];
	}
	return ret;
}
void main()
{
   
	int array[5]={
   1,2,3,4,5};
	int iret=Max<int,5>(array);
	double dset[3]={
   10.5,11.2,9.8};
	double dret=Max<dset,3>(dset);
	cout << iret << dret << endl;
}
重载函数模板

实例02 重载函数模板获取字符串最小值

#include <iostream>
#include <string>
using namespace std;
template<class type>
type min(type a,type b)
{
   
	if(a<b)
		return a;
	return b;
}
char *min(char *a,char *b)
{
   
	if(strcmp(a,b))
		return b;
	return a;
}
void main()
{
   
	cout << "最小值:" << min(10,1) << endl;
	cout << "最小值:" << min('a','b') << endl;
	cout << "最小值:" << min('hi','mr') << endl;
}

类模板

使用template 关键字不但可以定义函数模板,也可以定义类模板。类模板代表一族类,是用来描述通用数据类型或处理方法的机制,它使类中的一些数据成员和成员函数的参数或返回值可以取任意数据类型。类模板可以说是用类生成类,减少了类的定义数量。

类模板的定义与声明

类模板的一般定义形式为:

template <类型形式参数表> class 类模板名
{
   
	... //类模板体
};

类模板成员函数定义形式为:

template <类型形式参数表>
返回类型 类模板名<类型名表>::成员函数名(参数列表)
{
   
	...	//函数体
}

template是关键字,类型形式参数表与函数模板定义相同。类模板的成员函数定义时,类模板名与类模板定义时要一致。类模板不是一个真实的类,而是需要重新生成类,生成类的形式如下:

类模板名<类型实在参数表>

用新生成的类定义对象的形式如下

类模板名<类型实在参数表> 对象名;

实例03 定义一个容器的类模板

template <class type>
class Container
{
   
	type item;
public:
	Container(){
   };
	void beigin(const type& tnew);
	void end(const type& tnew);
	void insert(const type& tnew);
	void empty(const type& tnew);
};
void Container<type
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值