博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五十六课、函数模板的概念和意义
阅读量:6348 次
发布时间:2019-06-22

本文共 1448 字,大约阅读时间需要 4 分钟。

一、交换变量的方法

1、定义宏代码块

(1)、优点:代码复用,适合所有的类型

(2)、缺点:编译器不知道宏在哪,缺少类型检查

2、定义函数

(1)、优点:真正的函数调用,编译器对类型进行检查

(2)、缺点:根据类型重复定义函数,无法代码复用

 

#include
using namespace std;#define SWAP(t, a, b) \do \{ \ t c = a; \ a = b; \ b = c; \}while(0) void swap(int& a, int& b){ int i = a; a = b; b = i;}/*void swap(double& a, double& b){ int i = a; a = b; b = i;}*/int main(){ int a = 1; int b = 2; swap(a, b); cout << "swap(a, b):" << a << "," << b << endl;// 输2,1 SWAP(int, a, b); cout << "SWAP(int, a, b):" << a << "," << b << endl;//输出1, 2 return 0;}

 

二、泛型编程与函数模板

1、泛型编程的概念:不考虑具体类型的编程方式

2、c++中的泛型编程:函数模板

(1)、一种特殊的函数可用不同的类型来调用

(2)、看起来和普通函数很类似,区别是类型可被参数化

3、函数模板的语法规则

(1)、template关键字用于声明开始进行泛型编程

(2)、typename关键字用于声明泛指类型

4、函数模板的使用

(1)、自动推导调用

(2)、具体类型显示调用

#include 
#include
using namespace std;template < typename T >void Swap(T& a, T& b){ T c = a; a = b; b = c;}template < typename T >void Sort(T a[], int len){ for(int i=0; i
a[j] ) { Swap(a[i], a[j]); } } }}template < typename T >void Println(T a[], int len){ for(int i=0; i

三、小结

(1)、函数模板是泛型编程在c++中的应用方法之一(还有类模板等)

(2)、函数模板能够根据实参对参数类型进行推导

(3)、函数模板支持显示地指定参数类型

(4)、函数模板是c++中重要的代码复用方式

 

转载于:https://www.cnblogs.com/gui-lin/p/6373730.html

你可能感兴趣的文章
学习笔记——UNDO SEGMENT
查看>>
hessian 在PHP中的使用
查看>>
eclipse中一些常见svn图标的含义
查看>>
进度条(SeekBar和RatingBar)—Mars Android开发视频之第一季第十八集(重)
查看>>
Android6.0拨打电话时的权限问题
查看>>
华为SNS2124扩展端口授权及增加zone配置
查看>>
消息队列_RabbitMQ-0001.RabbitMQ消息代理/队列服务器快速安装部署?
查看>>
Linux crontab定时执行任务命令格式与详细例子
查看>>
服务器要使用两张网卡做bond0以实现网络冗余和提高带宽
查看>>
dhcp 配置
查看>>
中国孩子最需要的6种教育
查看>>
PVS让存储颤抖,系列博文之二:PVS的写缓存新技术之MCS方式实测篇
查看>>
jQuery插件开发的两种方法及$.fn.extend的详解
查看>>
SSDB高可用方案
查看>>
undo表空间
查看>>
Exchange 2013部署系列之(六)配置邮件流和客户端访问
查看>>
TE二次开发:点线面图层的结构
查看>>
关于swift的一些属性总结
查看>>
python学习笔记-Day17 (上节知识点补充)
查看>>
python学习笔记-Day04-第一部分(冒泡算法的实现)
查看>>