demo_1_template_function.cpp

来自「对于一个初涉VC++的人来书」· C++ 代码 · 共 57 行

CPP
57
字号

//************************************************
// 模板函数:以数据类型作为函数参数
//           而定义的一系列重载函数的公共通用代码。
// 根据函数调用的实参:
//     首先进行一般函数的形参匹配调用一般函数,否则:
//     进行模板函数的形参实例化调用模板函数,否则:
//     实参进行允许的隐类型转换后形参匹配调用一般函数,否则:
//     提示语法错误。
//************************************************

#include<iostream.h>

//用class和typename是等价的,但typename是ANSI C++标准推荐使用的关键字
//用class容易与C++类产生混淆,而用typename含义清楚(是类型名而非类名)
template <typename T> 
void swap(T& x, T& y)
{
	T temp;

	cout<<"Calling template function version: ";
	cout<<x<<","<<y<<" : ";
	temp=x;
	x=y;
	y=temp;
	cout<<x<<","<<y<<endl;

	return;
}

void swap(int& x, int& y)
{
	int temp;

	cout<<"Calling general function version: ";
	cout<<x<<","<<y<<" : ";
	temp=x;
	x=y;
	y=temp;
	cout<<x<<","<<y<<endl;

	return;
}

int main()
{
	int i=10,j=20;
	float x=10.44f,y=20.14f;
	char a='A',b='B';

	swap(i,j);
	swap(x,y);
	swap(a,b);

	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?