C++ 函数模板一(函数模板定义)
//函数模板定义--数据类型做参数
#include<iostream>
using namespace std; /*
函数模板声明
1.函数模板定义由模板说明和函数定义组成,并且一个模板说明对应一个函数定义
2.模板说明的类属参数必须在函数定义中至少出现一次
3.函数参数表中可以使用类属类型参数,也可以使用一般类型参数
*/ /*
template关键字告诉c++编译器现在要进行泛型编程
typename或者class告诉c++编译器T是一个数据类型,不要进行语法检查
typename和class完全可以互相替换
*/
template<typename T>//也可以写成template<class T>
void myswap(T &a, T &b){
T c = a;
a = b;
b = c;
};
//void Print(T &a,T &b){
// cout << "a=" << a << "\nb=" << b << endl;
//}
//报错:一个模板说明只能对应一个函数定义,想再定义一个函数,必须再写一个模板声明 template<class T>
void Print(T &a, T &b){
cout << "a=" << a << "\nb=" << b << endl;
} //多参数的函数模板
template<typename T1,typename T2>
//这种定义当调用函数时就会报错 MySort(a);
//模板说明的类属参数必须在函数定义中至少出现一次
void MySort(T1 a){
cout << "aaa" << endl;
} template<typename T>
void Getnum(T a,int b){
cout << "a=" << a << ";\nb="<<b << endl;
} void main(){
int a=;
int b = ;
//泛型编程函数的使用方法1---自动类型推导
myswap(a, b);
Print(a, b);
//泛型编程函数的使用方法2---显式具体类型调用
myswap<int>(a, b);
Print(a, b);
//MySort(a); 报错 : error C2783: “void MySort(T1)”: 未能为“T2”推导 模板 参数
cout << "----------------" << endl;
Getnum(a, );
system("pause");
}
C++ 函数模板一(函数模板定义)的更多相关文章
- C++ 实验2:函数重载、函数模板、简单类的定义和实现
1.函数重载编程 编写重载函数add(),实现对int型,double型,Complex型数据的加法.在main()函数中定义不同类型数据,调用测试. #include <iostream> ...
- 为什么 c++中函数模板和类模板的 声明与定义需要放到一起?
将模板的声明与定义写在一起实在很不优雅.尝试用“传统”方法,及在.h文件里声明,在.cpp文件里定义, 然后在main函数里包含.h头文件,这样会报链接错误.why!!!!!!!!!!!!! 这是因为 ...
- [Reprint] C++函数模板与类模板实例解析
这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...
- C++学习笔记之模板(1)——从函数重载到函数模板
一.函数重载 因为函数重载比较容易理解,并且非常有助于我们理解函数模板的意义,所以这里我们先来用一个经典的例子展示为什么要使用函数重载,这比读文字定义有效的多. 现在我们编写一个交换两个int变量值得 ...
- ThinkPHP - 模板使用函数
模板使用函数 1.模板引擎自带函数:仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用.用于模板标签的函数可以是P ...
- c++的函数模板和类模板
函数模板和普通函数区别结论: 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 函数模板和普通函数在一起,调用规则: 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 ...
- C++模板学习:函数模板、结构体模板、类模板
C++模板:函数.结构体.类 模板实现 1.前言:(知道有模板这回事的童鞋请忽视) 普通函数.函数重载.模板函数 认识. //学过c的童鞋们一定都写过函数sum吧,当时是这样写的: int sum(i ...
- 模板类的约束模板友元函数:template friend functions
本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节. 所谓template friend functions,就是使友元函数本身成为模板.基本步骤:1,在类定义的前面声明每个 ...
- C++函数重载和函数模板(04)
函数重载 函数重载可以使一个函数名具有多种功能,即具有“多种形态”,这种特性称为多态性. C++的多态性又被直观地称为“一个名字,多个函数”.源代码只指明函数调用,而不说明具体调用哪个函数.编译器的这 ...
- C++_进阶之函数模板_类模板
C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...
随机推荐
- Linux 搭建svn环境
第一步:下载并安装svn sudo apt-get install subversion 第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置) 选择在var路径下创建版本库,当前处于根目 ...
- 页面嵌入QQ功能(点QQ建立一个临时会话,显示在页面的固定位置)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 爪哇国新游记之七----使用ArrayList统计水果出现次数
之前学习制作了DArray,了解ArrayList就容易了. /** * 用于存储水果名及数量 * */ public class Fruit{ private String name; public ...
- Java I/O操作汇总
作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/41154807 本文简绍解说了FileWriter.FileReader.Buf ...
- sprintf、vsprintf、sprintf_s、vsprintf_s、_snprintf、_vsnprintf、snprintf、vsnprintf 函数辨析
看了题目中的几个函数名是不是有点头晕?为了防止以后总在这样的细节里纠缠不清,今天我们就来好好地辨析一下这几个函数的异同. 实验环境: Windows下使用VS2017Linux下使用gcc4.9.4 ...
- hdu 3572 Task Schedule(最大流&&建图经典&&dinic)
Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- CentOS 安装jdk1.7 32位
CentOS 安装jdk1.7 32位 1.下载jdk-7u21-linux-i586.rpm ? 1 wget http://uni-smr.ac.ru/archive/dev/java/bulk/ ...
- Python-Sublime Text3 激活码
1.点击菜单-help-Enter License 2.输入以下内容中的一个 —– BEGIN LICENSE —– Michael Barnes Single User License EA7E- ...
- STL容器分析--list
就是一双向链表,可高效地进行插入删除元素.
- php serialize序列化对象或者数组
serialize序列化对象或者数组 $str=serialize(array('a'=>1,'b'=>2)); echo $str; 输入出a:2:{s:1:"a"; ...