1,C++模板关键字template
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板可以分为函数模板与类模板
2.函数模板
一般形式:
template <typename T>
T func_name(parameter list) //T表示函数返回类型, func_name表示函数名
{
// 函数的主体
}
实例:
#include <iostream>
using namespace std;
//函数模板
template<typename T>
inline T const& Max(T const& a, T const& b) {
return a < b ? b : a;
}
int main()
{
int i = 30;
int j = 20;
cout << "Max(i, j): " << Max(i, j) << endl;
double f1 = 13.5;
double f2 = 20.7;
cout << "Max(f1, f2): " << Max(f1, f2) << endl;
string s1 = "Hello";
string s2 = "World";
cout << "Max(s1, s2): " << Max(s1, s2) << endl;
return 0;
}
3.类模板
一般形式:
template <class T>
class class_name
{
public:
class_name(parameter list;//构造函数,parameter list代表参数列表
~class_name(); //析构函数
return_type func_name(); //return_type代表返回类型
private:
//方法属性
};
//方法实现
template<class T>
class_name<T>::class_name()
{
}
template<class T>
class_name<T>::~class_name()
{
}
template<class T>
return_type class_name<T>::func_name() {
//函数体
}
实例:
#include <iostream>
using namespace std;
//类模板
template <class T>
class Stack
{
public:
Stack(T a,T b);
~Stack();
void sum(); //实现a+b
private:
T a;
T b;
};
template<class T>
Stack<T>::Stack(T a,T b)
{
this->a = a;
this->b = b;
}
template<class T>
Stack<T>::~Stack()
{
cout << "析构函数" << endl;
}
template<class T>
void Stack<T>::sum() {
cout << a + b << endl;
}
int main()
{
Stack<int> intStack(2, 3);
intStack.sum();
return 0;
}