当前位置:  编程技术>c/c++/嵌入式

C++函数模板与类模板实例解析

    来源: 互联网  发布时间:2014-10-27

    本文导语:  本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下: 泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种...

本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下:

泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思。泛型编程最初诞生于C++中,目的是为了实现C++的STL(标准模板库)。

模板(template)是泛型编程的基础,一个模板就是一个创建类或函数的蓝图或公式。例如,当使用一个vector这样的泛型类型或者find这样的泛型函数时,我们提供足够的信息,将蓝图转换为特定的类或函数。

一、函数模板

一个通用的函数模板(function template)就是一个公式,可用来生成针对特定类型或特定值的函数版本。模板定义以关键字template开始,后面跟一个模板参数列表,列表中的多个模板参数(template parameter)以逗号分隔。模板参数表示在类或函数定义中用到的类型或值。

1、类型参数

一个模板类型参数(type parameter)表示的是一种类型。我们可以将类型参数看作类型说明符,就像内置类型或类类型说明符一样使用。类型参数前必须使用关键字class 或typename:

template  // typename和class一样的 
T function(T* p) 
{ 
  T tmp = *p;  // 临时变量类型为T 
  //... 
  return tmp;  // 返回值类型为T 
} 

关键字typename和class是一样的作用,但显然typename比class更为直观,它更清楚地指出随后的名字是一个类型名。

编译器用模板类型实参为我们实例化(instantiate)特定版本的函数,一个版本称做模板的一个实例(instantiation)。当我们调用一个函数模板时,编译器通常用函数实参来为我们推断模板实参。当然如果函数没有模板类型的参数,则我们需要特别指出来:

int a = 10; 
cout 

    
 
 

您可能感兴趣的文章:

  • 让editplus3 函数模板完全显示函数
  • gdb调试时如何进入类成员函数和模板类成员函数?谢谢
  • Thinkphp模板中截取字符串函数简介
  • 在PHP模板引擎smarty生成随机数的方法和math函数详解
  • PHP模板引擎smarty生成随机数 smarty中math函数用法
  • Linux g++编译调用模板函数的类不通过,但是VC2005通过
  • C++中函数模板的用法详细解析
  • G++ 4.4.2和linux编译调用模板的函数,编译不通过,但是VC2005却可以。
  • 请教关于g++ 编译 模板 friend 函数的问题
  • C++可变参数的函数与模板实例分析
  • C++标准模板库函数sort的那些事儿
  • python中使用sys模板和logging模块获取行号和函数名的方法
  • sqlserver 函数、存储过程、游标与事务模板
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 怎么样在C++里调用Fortran函数??????
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • SOS ,在UNIX下编译C++程序时出现链接错误:未下义的符号,但函数库里有这些函数,不知道为什么?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • 求linux C++的时间相关函数及用法,急用,谢谢
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • C++ 函数编程库 FC++
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • C++ 程序中,如何增加c函数?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • C++中虚拟函数表的问题
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • linux下编译c++程序,系统头文件中包含的函数的定义源代码可以查看吗?
  • c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
  • Linux中的共享库难道只能导出函数,而不能导出C++类吗?
  • c++断言assert()函数的头文件及其用法详解
  • 常用C++函数库 Libretta
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php session_id()函数介绍及代码实例
  • 既然在定义实例变量的时候可以初始化实例变量的值,那还要构造函数干吗?谢谢!
  • Python过滤函数filter()使用自定义函数过滤序列实例
  • jquery中map函数与each函数的区别实例介绍
  • php构造函数与析构函数实例分析
  • getdate()函数的用法实例
  • T-SQL实例 函数结果设置为列别名
  • 有关Java构造函数的问题之二——实例性
  • C#中私有构造函数的特点和用途实例解析
  • 在JSP中如何实例化构造函数有参数的JavaBean?
  • PHP递归函数返回值使用实例
  • php 构造函数与析构函数应用实例
  • ShellExecute函数用法的实例代码
  • PHP函数getenv简介和使用实例
  • c#只读字段和常量的区别,以及静态构造函数的使用实例
  • Python中apply函数的用法实例教程
  • jquery toggle()函数实例解析
  • linux中信号signal函数实例遇到的疑问
  • T-SQL常用游标函数实例学习
  • php字符串分割函数explode实例
  • asp match正则函数使用Matchs实例
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • cityhash 32位,64位和128位介绍及函数列表
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • PHP的substr() 函数用法
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3