【C++基础】C++函数模板(二)
来源:互联网 发布:高博软件地址 编辑:程序博客网 时间:2024/06/06 07:40
我是小毛驴,转载请注明出处:http://blog.csdn.net/liulongling/article/details/50624029
一、函数模版
1.1什么是函数模板?
c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数, 其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。
- c++提供两种模板机制:函数模板和类模板
- 类属 - 类型参数化,又称参数模板 使得程序(算法)可以从逻辑上抽象,把被处理的对象(数据)类型作为参数传递。
1.2为什么用函数模板?
1.3代码示例
////// Created by 刘龙玲// Copyright © 2016年 liulongling. All rights reserved.//#define using _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;void test02(int a,int b){ int temp = a; a = b; b = temp; cout<<"a="<<a<<"b="<<b<<endl;}template<class T>void test01(T& a,T& b){ T temp = a; a = b; b = temp; cout<<"a="<<a<<"b="<<b<<endl;}int main(){ int a = 10; int b = 20; test01(a, b); float c = 1.6; float d = 2.90; test01(c, d); //函数模板不允许自动类型转化 //test01(a,c); //普通函数能够自动进行类型转化 test02(a,c); return 1;}
1.4 函数模板和普通函数的区别?
- 函数模板不允许自动类型转化
- 普通函数能够自动进行类型转化
1.5 函数模板和普通函数在一起调用规则:
- 函数模板可以像普通函数那样可以被重载
- c++编译器优先考虑普通函数
- 如果函数模板可以产生一个更好的匹配,那么选择模板
- 可以通过空模板实参列表的语法限定编译器只能通过模板匹配
1.6 总结
- 模板把函数或类要处理的数据类型参数化,表现为参数的多态性,成为类属。
- 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。
- 用模板是为了实现泛型,可以减轻编程的工作量,增强函数的重用性。
0 0
- C语言基础二(函数)
- 【基础C&C++】模板
- C语言基础函数(二)
- 【c/c++】函数模板和模板函数
- c++STL基础部分(二) 之模板
- C/C++ 函数模板
- c++:函数模板
- 【C++】函数模板
- 【c++】函数模板
- C语言函数模板
- C++:函数模板
- 【C++】模板函数总结!!!
- C/C++:函数模板与类模板
- [C/C++]模板函数与模板类
- c语言基础 二
- C语言基础二
- C语言基础二
- C语言基础(二)
- Android Jni开发之eclipse中自动化编译ndk-build
- uva11549 - Calculator Conundrum
- 获取系统环境变量
- linux的前台后台进程
- ffmpeg编译
- 【C++基础】C++函数模板(二)
- nuttx编译过程
- 哈理工OJ 1643 多边形-2【极角排序+凸凹包判断】
- RMQ 模板
- 在1.7的jdk环境下 如何通过修改ant脚本文件设置某个指定项目编译环境为1.6
- Swift2.2 学习笔记(二) ___控制流
- c语言动态内存分配之正确使用指针
- 设计模式——原则
- BBED如何配置