c++学习之函数模板应用和重载
2014-11-13 20:04
148 查看
c++语言提供了template关键字用于定义模板。
其中,template为关键字,表示定义一个模板,<>表示模板参数,模板参数主要有两种,一种是模板类型参数,另一种是模板非类型参数。其后是一个用户定义的合法的标识符,本例为type,也可以是其他合法标识符。
重载函数模板:
具有相同名称但是参数不同的函数模板,成为重载模板。
#include <stdio.h> template <class type,int nLen> //定义一个模板类型 type Max(type Array[nLen]) //定义函数模板 { type tRet = Array[0]; //定义一个变量 for(int i=1; i<nLen; i++) //遍历数组元素 { tRet = (tRet > Array[i])? tRet : Array[i]; //比较数组元素大小 } return tRet; //返回最大值 } int main(int argc, char* argv[]) { int nArray[5] = {1,2,3,4,5}; //定义一个整型数组 int nRet = Max<int,5>(nArray); //调用函数模板Max double dbList[3] = {10.5,11.2,9.8}; //定义实数数组 double dbRet = Max<double,3>(dbList); //调用函数模板Max return 0; }
其中,template为关键字,表示定义一个模板,<>表示模板参数,模板参数主要有两种,一种是模板类型参数,另一种是模板非类型参数。其后是一个用户定义的合法的标识符,本例为type,也可以是其他合法标识符。
重载函数模板:
具有相同名称但是参数不同的函数模板,成为重载模板。
#include "stdio.h" #include "iostream.h" template <class type> //定义一个模板类型 type Add(type Plus,type Summand) //定义一个重载的函数模板 { return Plus + Summand; //返回两个数之和 } template <class type> //定义一个模板类型 type Add(type Array[], int nLen) //定义一个重载的函数模板 { type tRet = 0; //定义一个变量 for(int i=0; i<nLen; i++) //利用循环累计求和 { tRet += Array[i]; } return tRet; //返回结果 } int main(int argc, char* argv[]) //主函数 { int nRet = Add(100, 200); //调用第一个重载的函数模板,实现两个数的求和运算 cout << "整数之和: " << nRet << endl; //输出结果 int nArray[5]= {1, 2, 3, 4, 5}; //定义一个整型数组 int nSum = Add(nArray, 5); //调用第2个重载的函数模板,实现数组元素的求和运算 cout << "数组元素之和:" << nSum << endl; //输出结果 return 0; }
相关文章推荐
- c++学习之函数模板应用和重载
- C++学习 【4.4】 利用函数实现指定的功能---函数的重载、函数模板、有默认参数的函数
- C++基础学习系列--2、递归思想,内置函数,函数重载,函数模板,带默认值函数
- C++学习 函数模板及重载
- C++学习笔记之模板(1)——从函数重载到函数模板
- C++学习笔记五——函数重载(多态)、函数模板及函数模板重载和完全匹配与最佳匹配
- C++基础学习笔记----第四课(函数的重载、C和C++的相互调用)
- C++ 函数模板和排序的函数模板——学习笔记
- c++学习笔记之函数重载与const的关系
- C++ 学习之函数重载、基于const的重载
- C++学习笔记_7:函数模板
- C++ - 函数模板(function template) 的 重载(overload) 详解 及 代码
- 【转】王老师 C++ 函数重载和模板
- c++入门学习(函数模板)
- C++学习笔记_6:函数的重载
- C++ 学习之函数重载、基于const的重载
- 【C++学习笔记】函数重载和函数覆盖
- C++成员函数指针的应用(学习收录)
- 数据结构学习系列三-单向循环链表(c++实现且应用模板)
- C++基础学习笔记----第四课(函数的重载、C和C++的相互调用)