C++ 函数模板

简介: C++ 函数模板

定义  

函数模板是一种特殊的函数,可以使用不同的类型进行调用,对于功能相同的函数,不需要重复编写代码,并且函数模板与普通函数看起来很类似,区别就是类型可以被参数化


函数模板定义形式


template    < 类型形式参数表 >  


类型形式参数的形式为:


                    typename T1 ,  typename T2 , …… , typename Tn


或     class T1 ,  class T2 , …… , class Tn  

tt.png

  函数模板通过template与typename两个关键字来定义,如下:


//template 告诉C++编译器 我要开始泛型编程了 .看到T, 不要随便报错


template <typename T>


void myswap(T &a, T &b)


{


   T c = 0;


   c = a;


   a = b;


   b = c;


   cout << "hello ....我是模板函数 欢迎 calll 我" << endl;


}


template关键字用于声明开始泛型编程,typename关键字用于声明泛型类型。


调用

调用函数模板的两种形式:


                  1、显示调用如:myswap<float>(a, b);        


                 2、自动数据类型推导如:myswap(a, b);  


举例:


#include <iostream>


using namespace std;



template <typename T>


void myswap(T &a, T &b)


{


   T c = 0;


   c = a;


   a = b;


   b = c;


   cout << "hello ....我是模板函数 欢迎 calll 我" << endl;


}



int main()


{


   int x = 10;


   int y = 20;



   myswap<int>(x, y); //1 函数模板 显示类型 调用


   myswap(x, y);  //2 自动类型 推导


   printf("x:%d y:%d \n", x, y);


}


运行结果:

tt.png

目录
相关文章
|
1月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
89 10
|
3月前
|
编译器 C++
【C++】——初识模板
【C++】——初识模板
【C++】——初识模板
|
19天前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
22天前
|
编译器 程序员 C++
【C++打怪之路Lv7】-- 模板初阶
【C++打怪之路Lv7】-- 模板初阶
13 1
|
30天前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
43 6
|
30天前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
21 0
C++ 多线程之线程管理函数
|
1月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
23 3
|
1月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
129 1
|
1月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
25 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
38 0
C++入门6——模板(泛型编程、函数模板、类模板)