//函数模板定义--数据类型做参数
#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++ 函数模板一(函数模板定义)的更多相关文章

  1. C++ 实验2:函数重载、函数模板、简单类的定义和实现

    1.函数重载编程 编写重载函数add(),实现对int型,double型,Complex型数据的加法.在main()函数中定义不同类型数据,调用测试. #include <iostream> ...

  2. 为什么 c++中函数模板和类模板的 声明与定义需要放到一起?

    将模板的声明与定义写在一起实在很不优雅.尝试用“传统”方法,及在.h文件里声明,在.cpp文件里定义, 然后在main函数里包含.h头文件,这样会报链接错误.why!!!!!!!!!!!!! 这是因为 ...

  3. [Reprint] C++函数模板与类模板实例解析

    这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下   本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...

  4. C++学习笔记之模板(1)——从函数重载到函数模板

    一.函数重载 因为函数重载比较容易理解,并且非常有助于我们理解函数模板的意义,所以这里我们先来用一个经典的例子展示为什么要使用函数重载,这比读文字定义有效的多. 现在我们编写一个交换两个int变量值得 ...

  5. ThinkPHP - 模板使用函数

    模板使用函数 1.模板引擎自带函数:仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用.用于模板标签的函数可以是P ...

  6. c++的函数模板和类模板

    函数模板和普通函数区别结论: 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 函数模板和普通函数在一起,调用规则: 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 ...

  7. C++模板学习:函数模板、结构体模板、类模板

    C++模板:函数.结构体.类 模板实现 1.前言:(知道有模板这回事的童鞋请忽视) 普通函数.函数重载.模板函数 认识. //学过c的童鞋们一定都写过函数sum吧,当时是这样写的: int sum(i ...

  8. 模板类的约束模板友元函数:template friend functions

    本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节. 所谓template friend functions,就是使友元函数本身成为模板.基本步骤:1,在类定义的前面声明每个 ...

  9. C++函数重载和函数模板(04)

    函数重载 函数重载可以使一个函数名具有多种功能,即具有“多种形态”,这种特性称为多态性. C++的多态性又被直观地称为“一个名字,多个函数”.源代码只指明函数调用,而不说明具体调用哪个函数.编译器的这 ...

  10. C++_进阶之函数模板_类模板

     C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...

随机推荐

  1. Android常用传感器用法一览(2)

    在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用. #define SENSOR_TYPE_ACCELEROMETER       1 //加速度#de ...

  2. linux中添加开机自启服务的方法

    往文件/etc/rc.d/rc.local中追加内容即可,如: /mongodb/start_mongoDB.sh

  3. Style对象之一

    <html> <style type="text/css"> body{ background-color="#FFCC80"; bac ...

  4. 【DB2】判断连续时间,如果间断则新增一条记录

    需求描述 例如:产品A01 2017-01-02到2017-01-03产品状态都是差,那么就是一条记录 但是在2017-01-04这天的状态不是差,到了5日这天又是差了 就是另外一条记录了 需求处理 ...

  5. Backbone.js 1.0.0源码架构分析(二)——Event

    (function(){ //省略前面代码 var Events = Backbone.Events = { // 根据name订阅事件,push到this._events[name] on: fun ...

  6. C# 调用bat文件

    引入名称空间: using System.Diagnostics; Process proc = null; try { string targetDir = string.Format(@" ...

  7. Spring jar 下载地址

    Spring jar 下载地址 http://repo.springsource.org/libs-release-local/org/springframework/spring/

  8. php对二维数据进行排序

    PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义. 方法一:(经验证,成功)   作用:对二维数组进行指定key排序 参数:$arr ...

  9. PHP REST架构简单设计

    REST是什么? REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性. REST的特点 ...

  10. JUC组件扩展(二)-JAVA并行框架Fork/Join(二):同步和异步

    在Fork/Join框架中,提交任务的时候,有同步和异步两种方式. invokeAll()的方法是同步的,也就是任务提交后,这个方法不会返回直到所有的任务都处理完了. fork方法是异步的.也就是你提 ...