模板专题:函数模板

第一个例子:比较两个数值的大小(整型、浮点型等)

template<class T>
T TSWAP(T a, T b)
{
    return a > b ? a : b;
}
int main()
{
    cout << TSWAP(9, 20) << endl;
    /*cout << TSWAP<int>(9, 20) << endl;*//*也可行;*/
    cout << TSWAP(9.5, 6.3) << endl;
    return 0;
}
时间: 2024-10-07 10:53:23

模板专题:函数模板的相关文章

类模板和函数模板

函数模板: 函数模板全特化:所谓特化,是指相对普通模板的特化,是另外一个模板.但不是实例,只是模板 template <class T>                                      //普通函数模板,泛型T mymax(const T t1, const T t2){   return t1 < t2 ? t2 : t1;} template <>const char* mymax(const char* t1,const char* t2)  

函数模板,函数模板重载,可变参数模板,函数模板覆盖,通过引用交换数据

 1.函数模板初级,如果想使用模板,需要实例化,实例化的方式是加上<数据类型> #include <iostream> //函数模板可以对类型进行优化重载,根据类型会覆盖 //如果仍然要使用模板函数,需要实例化 template<class T> T add(T a, T b) { std::cout << "T add " << std::endl; return a + b; } int add(int a, int

模板类与类模板、函数模板与模板函数等的区别

在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用.下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误.这几个词是: 函数指针——指针函数 数组指针——指针数组 类模板——模板类 函数模板——模板函数 最终在使用中,我们就可以让它们实至名归,名正言顺. 1.函数指针——指针函数   函数指针的重点是指针.表示的是一个指针,它指向的是一个函数,例子: int   (*pf)(); 指针函数的重点是函数.表示的是一个函数,它的返回值是指针.例子:

C++入门经典-例9.1-函数模板,函数模板的作用,使用数组作为模板参数

1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: template <类型形式参数> 返回类型 函数名(形式参数表) { ...//函数实现 } 其中template为关键字,表示定义一个模板,尖括号"<>"中为模板参数,模板参数主要有两种,一种是模板类型参数,另一种是模板非类型参数.上述代码中定义的模板使用的是模板类型参

类模板和函数模板引发的思考

首先我们在学习类模板和函数模板时候会遇到这样一个问题: 类模板 与模板类 函数模板与模板函数 这些不仅仅是简单的文字游戏,而是需要我们深深的区分一下才可以理解其中的奥秘! 再回想一下我们在学习C语言的时候也遇到了这样几个类似的名词 函数指针与指针函数 数组指针与指针数组 函数指针即是重点在后边的名词指针,前边的函数只是修饰名词指针的一个定语而已,欧,这是一个语文的奥秘哟,忽然觉得自己好博学,言归正传,重点在指针,那就是指向一个函数的指针,其中保存了这个函数的地址通过指针解引用可以调用这个函数 就

模板(三) 函数模板

一.函数模板介绍 函数模板是一个生成函数的公式,可以用来生成针对特定类型的函数版本: 如:求两个具有相同的数据类型的数值中的最大值:普通的一个函数只能使用于某种特定类型,不能适用于其他数据类型,而使用函数模板则可以进行泛型编程, 对于使用该函数模板的各个数据类型在编译时期则会生成相应的适用于该数据类型的函数版本,这样就避免对于每一种数据类型编写相应的函数版本, 可以加快开发速度,减少不必要的重复代码. template<typename T> T Max(const T &lhs, c

C++模板(类模板、函数模板)

1.在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 答:class用于定义类,在模板引入c++后,最初定义模板的方法为:template<class T>,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了:      template

【C/C++学院】(11)泛型编程/函数模板/类模板

1.泛型编程基础 #include "iostream" using namespace std; void swap(int &a, int &b) { int c; c = a; a = b; b = c; } void swap(float &a, float &b) { float c; c = a; a = b; b = c; } void main() { int a = 1, b = 2; swap(a, b); float a1 = 1,

C++函数模板的使用

函数模板: 函数模板是函数的蓝图或处方,编译器使用它生成函数系列的新成员.新函数在第一次使用时创建.从函数模板中生成的函数称为该模板的一个实例或模板的实例化.函数模板的开头是关键字template,表示这是一个模板.其后是一对尖括号,它包含了参数列表.在使用从模板中生成的函数之前,必须确保把声明(即原型)或模板的定义放在源文件中.模板的实例化只生成一次.如果后续的函数调用需要同一个实例,就会调用已经创建好的实例,即使同一个实例在不同的源文件中生成,程序也仅会包含该实例定义的一个副本.使用时需要注

C++程序设计方法4:函数模板

函数模板 有些算法与类型无关,所以可以将函数的参数类型也定义为一种特殊的"参数",这样就得到"函数模板" 定义函数模板的方法:template<typename T> 返回类型 函数名称(函数参数): 如:template<typename T> T sum(T a, T b) {return a + b;} 函数模板在调用的时候,因为编译器能够自动推导出实际参数的类型,所以,形式上调用一个函数模板与 普通函数没有区别,如: int main