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来实现的。
相关文章推荐
- faster_rcnn c++版本的 caffe 封装,动态库(2)
- c++中string类成员函数的总结
- 第7周 C语言程序设计(新2版) 各类位运算符定义
- 关于C语言的问卷调查(补交)
- C++变量和基本类型
- C++_(矩阵)快速幂
- C++_FatMouse' Trade(贪心)
- 第7周 C语言程序设计(新2版) 例题 3个函数例题
- C++builder Property属性
- Java和C语言,C++语言主要差别
- C++ primer plus 第十章课后习题,原创答案。
- C++primer知识点(五)(终结C++primer)
- C++primer知识点(四)
- C++primer知识点(三)
- C++primer知识点(二)
- C++primer知识点(一)
- A*启发式搜索
- [C++]Random库--正态分布
- HDU 2955-Robberies(01背包变形)
- C++中的宏替换