您的位置:首页 > 编程语言 > C语言/C++

C++中模板类引入

2016-05-14 21:16 501 查看
使用模板的目的就是能够让程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些类型无法实现,要实现这些类型的交换就要重新编写另一个swap函数。使用模板的目的就是要让这程序的实现与类型无关,比如一个swap模板函数,即可以实现int 型,又可以实现double型的交换。模板可以应用于函数和类。

下面介绍最简单的模板类,通过实例进行讲解

#pragma
template <typename T1=int , typename T2=double>
class CHoldPair
{
private:
T1 m_Value1;
T2 m_Value2;
public:
// 初始化
CHoldPair(const T1&value1, const T2 &value2)
{
m_Value1 = value1;
m_Value2 = value2;

};
const T1 &GetFirstValue()
{
return m_Value1;

};
const T2 &GetSecondValue()
{
return m_Value2;

};

};
定义了一个模板参数为T1、T2, 默认为int 和 double类型,成员变量中m_Value可以有两种类型,而且可以虽然修改,如果在具体化过程中没有指定模板类的参数,则采用默认参数,如果在具体化过程中想自定义模板参数,可以通过下面来实现模板参数的更改。

CHoldPair<char*, char*>mShortStringPair("FUCK ME", "Learn templates, love C++");


// template.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include "template.h"

int _tmain(int argc, _TCHAR* argv[])
{

using namespace std;
CHoldPair<>mIntFloatPair(300, 10.09);
CHoldPair<char*, char*>mShortStringPair("FUCK ME", "Learn templates, love C++");

cout << "Value1 Is " << mIntFloatPair.GetFirstValue() << endl;
cout << "Value2 Is " << mIntFloatPair.GetSecondValue() << endl;

cout << "Value1 Is " << mShortStringPair.GetFirstValue() << endl;
cout << "Value2 Is " << mShortStringPair.GetSecondValue() << endl;

getchar();
getchar();

return 0;
}
可见,通过模板类来实现对不同的数据类型的实例化,更加灵活,特别在STL中应用特别广泛,STL通常包含实用类和算法类,STL实现动态数组,链表,值容器。也就是其实STL内部通过Template来实现的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: