C++的函数模板和类模板理解
2016-11-14 22:07
447 查看
函数模板
使用的时候要注意产生函数模板的格式,和在main()函数里使用模板函数的格式。
类模板
首先注意,类模板的函数及函数实现必须在同一个.h文件中进行,不能按普通的.h中声明,.cpp中实现的格式来。
下面是代码说明:
.h文件
main()函数
#include <iostream> #include<stdlib.h> using namespace std; //d=定义一个函数模板 template <typename T> void display(T a) { cout << a << endl; } template<typename T,typename S> void display(T t, S s) { cout << t << endl; cout << s << endl; } template<typename T,int KSize> void display(T a) { for (int i = 0; i < KSize; i++) { cout << a << endl; } } int main() { display<double>(5.52); display<int, double>(10, 5.25); display<char, 5>('a'); //上面的3行代码就是模板函数,由函数模板得来。 system("pause"); return 0; }
使用的时候要注意产生函数模板的格式,和在main()函数里使用模板函数的格式。
类模板
首先注意,类模板的函数及函数实现必须在同一个.h文件中进行,不能按普通的.h中声明,.cpp中实现的格式来。
下面是代码说明:
.h文件
#ifndef MyArray_h #define MyArray_h #include <iostream> using namespace std; //对于这个类模板,因为IDE编译环境的原因,只可能在.h中全部实现,.cpp文件中就没有写东西 template<typename T,int KSize,int KVal>//加了这句话,表示这是一个模板类 class MyArray { public: MyArray(); ~MyArray() { delete[]m_pArr; m_pArr = NULL; } void display(); private: T *m_pArr;//在这里,定义数据成员也可以用模板参数,使用时候,模板中T是什么,这里m_pArr就会是什么类型的数组 }; template <typename T,int KSize,int KVal>//实现每个函数成员之前都要加一个模板 MyArray<T, KSize, KVal>::MyArray() { m_pArr = new T[KSize]; for (int i = 0; i < KSize;i++) { m_pArr[i] = KVal; } } template<typename T,int KSize,int KVal> void MyArray<T, KSize, KVal>::display()//和普通成员函数区别就是多了<>. { for (int i = 0; i < KSize; i++) { cout << m_pArr[i] << endl; } } #endif
main()函数
#include "MyArray.h" #include <iostream> #include <stdlib.h> #include <string> using namespace std; int main() { //首先将类模板实例化成一个模板类,<>里面的都要变得具体 MyArray<int, 5, 6> arr; arr.display(); system("pause"); return 0; }
相关文章推荐
- 理解C++模板
- 理解C++模板
- c++模板类(一)理解编译器的编译模板过程
- c++ 模板学习笔记:类模板和函数模板实现pair(权哥)
- c++ 模板学习笔记:理解类模板的特化与偏特化(权哥)
- 理解C++模板
- c++模板类(一)理解编译器的编译模板过程
- c++模板类(一)理解编译器的编译模板过程
- C++模板深入理解
- C++ 类模板作为函数模板示例
- 理解C++模板
- 理解C++模板
- 理解C++模板
- C++中函数模板和类模板
- c++模板类(一)理解编译器的编译模板过程
- 理解C++模板
- 理解C++模板
- 理解C++模板
- c++模板类(一)理解编译器的编译模板过程
- C++学习之构造函数的理解--模板形式的构造函数不会遮掩编译器生成的默认构造函数