模板
模板的作用是实现代码的重用,它通过将某一种数据类型定义为参数,然后通过将不同的数据类型按照实参形式传送而实现代码重用。
案例一(将两个同类型的较小值输出):
#include <iostream>
using std::cout;
using std::endl;
//声明函数模板,用来比较两个相同数据类型的参数大小
//class可以被typename代替
//T可以被任何字母或数字代替
template<class T>
T min(T x, T y)
{
return (x < y) ? x : y;
}
int main()
{
int n1 = 188, n2 = 269;
double d1 = 3.6, d2 = 6.8;
cout << "较小整数:" << min(n1, n2) << endl;
cout << "较小实数:" << min(d1, d2) << endl;
system("pause");
return 0;
}
案例二(类模板):
#include <iostream>
using std::cout;
using std::endl;
class A
{
public:
A(int i)
{
m_A = i;
}
~A(){}
static void print()
{
std::cout << "A" << std::endl;
}
friend class B;
protected:
int m_A;
};
class B
{
public:
B(int i)
{
m_B = i;
}
static void print()
{
std::cout << "B"<<std::endl;
}
void show(B b)
{
b.a->m_A = 3;
b.m_B = 2;
}
private:
A* a;
int m_B;
};
template<class T1,class T2>
class CTestTemplate
{
public:
CTestTemplate(T1 t)
{
m_number = t;
}
void print()
{
T2::print();
std::cout << m_number << std::endl;
}
private:
T1 m_number;
};
int main()
{
CTestTemplate<int, B>testtem(3);
testtem.print();
system("pause");
return 0;
}
定义A类,在类中定义构造函数和析构函数,并且定义一个输出函数,将A类中的成员变量输出。接下来定义了一个与A类类似的B类,输出B类的成员内容。
然后,定义了一个类模板,又定义了类模板CTestTemplate,在该类分别对其中的类成员T1和T2进行了操作,将T1赋值给了该类的成员变量,调用T2的输出函数。
转载自:黑凤梨の博客