模板---函数模板
来源:互联网 发布:r语言与数据挖掘 pdf 编辑:程序博客网 时间:2024/04/26 06:54
模板为函数提供一个通用代码,写一次,可以为不同类型的数据提供函数功能,减少了程序员的工作量。
函数模板在声明时将类型设为参数,在函数的声明和定义中运用这形参,最后在实际调用时确定是int、double、char还是自定义类型。
(1)函数模板的声明格式:
template<class T1, class T2>T1 func(T1 a, T2 b)
(2)函数模板的调用
实际调用函数模板时,可能没有确定模板形参的具体类型,但编译器能根据函数实参的类型推断出模板形参的值,称为隐性调用。但如果模板的形参中带有数据,则调用时必须确定实参的类型和数据。代码如下:
template<class T1, class T2>T2 func(T1 a, T2 b){ return a+b; } func('a',2); //隐性调用 func<int,double>(4,4.42); //显性调用template<class T1,class T2, int ZZZ> //带数据的模板T1 func(T1 a, T2 b){ return a+b+ZZZ;}func<double,int,4>(1.11,2); //必须显性调用
(3)模板具体化u
有时候会因为内存空间的不当操作导致模板函数终止,此时需要对模板函数具体化,也就是在模板函数调用时为了避免内存不良操作而量身打造一个函数。格式如下:
template<class T1>void swap(T1 a,T1 b){ T1 tmp=a; a=b; b=a; }//Myclass内有为指针赋予内存的操作,Myclass one("one");Myclass three("three");//one和three的内存空间大小不一样,不能直接交换//需要对函数模板进行具体定义template<>void swap(Myclass a, Myclass b){ 内存处理并交换内存值}
(4)模板函数重载
函数重载在代码中的表示就是:函数名或形参列表有不同。在模板函数中,需要避免出现“二义性“。
模板函数的优先级从高到低是:重载—->显性调用—->隐性调用。
0 0
- 函数模板、类模板
- 模板--->函数模板
- 模板函数,模板类
- 模板之函数模板
- C++ 模板->模板函数
- 类模板(函数模板)
- 模板---函数模板
- 函数模板 类模板
- 浅谈模板----函数模板
- 关于模板--模板函数
- 函数模板、类模板
- 模板之函数模板
- 模板函数
- 函数模板
- 函数模板
- 函数模板
- 函数模板
- 模板函数
- HDU5396 Expressions(区间DP)
- 有关import reload __import__
- MySQL--cmd命令连接mysql
- 字符串匹配的KMP算法
- Qt之界面实现技巧
- 模板---函数模板
- Java 编程语言支持三种循环构造类型
- windows下ftp server搭建
- ssl证书双向认证失效的一种解决方案
- 字符数组比较
- java 类加载机制(详解)
- 欢迎使用CSDN-markdown编辑器
- 8.24总结
- leetcode: (171) Excel Sheet Column Number