模板
C++里面两种编程思想:1.面向对象;2.泛型编程思想 函数模板的语法 template 函数声明或定义 函数模板的目的 对不同类型实现同一功能时的通用性。其中T表示通用的数据类型 举例
#include <iostream>
using namespace std;
void SwapInt(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
void SwapDouble(double &a, double &b)
{
double temp = a;
a = b;
b = temp;
}
template <typename T>
void mySwap(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
int main(int argc, const char *argv[])
{
int a = 10;
int b = 20;
mySwap(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
double c = 10.10;
double d = 20.20;
mySwap(c, d);
cout << "c = " << c << endl;
cout << "d = " << d << endl;
return 0;
}
函数模板和普通函数区别: 普通函数可以发生隐式类型转换;函数模板的自动类型推导是不能发生隐式类型转换的,而指定类型的函数模板可以发生隐式类型转换。示例如下:
#include <iostream>
using namespace std;
int myAdd(int a, int b)
{
return a + b;
}
template <typename T>
T myAdd01(T a, T b)
{
return a + b;
}
void test01()
{
int a = 10;
int b = 20;
cout << myAdd(a, b) << endl;
}
void test02()
{
int a = 10;
int b = 20;
char c = 'c';
cout << myAdd(a, c) << endl;
cout << myAdd01<int>(a, c) << endl;
}
int main(int argc, const char *argv[])
{
test02();
return 0;
}
|