当前位置: 首页 > news >正文

c++学习:函数模板+实战

目录

函数模板

思考

如果两个参数的类型不一样可以下面这么写

如果有指定返回参数可以下面这么写

实战 找出三个数中最大的一个


函数模板

  • 实际上就是建立一个通用函数,其函数返回值类型和形参类型不具体指定,用一个虚拟的类型来代表
  • template 是一个关键字 ,表示下面定义的是一个模板
  • typename 也是一个关键字,后面跟的T是一个虚拟的数据类型,可以用class来代替
  • 其函数返回值数据类型 和 形参的数据类型 不具体指定,用一个虚拟的类型在代表

思考

void _swap(int &a,int &b)
{a = a+b;b=a-b;a=a-b;
}
void _swap(double &a,double &b)
{a = a+b;b=a-b;a=a-b;
}
void _swap(char &a,char &b)
{a = a+b;b=a-b;a=a-b;
}

不断重写swap函数,太过麻烦

我们可以建立一个通用板的函数

template<typename T>
void _swap(T &a,T &b)
{cout<<"template"<<endl;a = a+b;b=a-b;a=a-b;
}int a = 10,b=20;
当_swap(a,b);调用后
会自动生成void _swap(int  &a,int  &b)

如果两个参数的类型不一样可以下面这么写

template<typename T,typename Tx>
void _swap(T &a,Tx &b)
{cout<<"template"<<endl;a = a+b;b=a-b;a=a-b;
}

如果有指定返回参数可以下面这么写

template<typename T=int>
T _max(T a,T b)
{T c;return a>b?a:b;
}int a = 10,b=20;
_max<int>(a,b);---->int _max(int a,int b)

实战 找出三个数中最大的一个

template<typename T>
T _max(T a,T b,T c)
{return a>b ? (a>c?a:c) : (b>c?b:c);
}cout<<max<int>(10,20,30)<<endl;

如果在类中实现

class Max
{
public:Max();template<typename T>T max(T a,T b,T c);
};如果有max.cpp  max.h,那下面模板函数定义一定要放到.h里,上面的也可以放到.h里
template<typename T>
T Max::max(T a,T b,T c)
{return a>b ? (a>c?a:c) : (b>c?b:c);
}调用方法如下Max mya;cout<<mya.max<int>(10,20,30)<<endl;

http://www.lryc.cn/news/272658.html

相关文章:

  • three.js gltf后处理颜色异常(伽马校正)
  • 面试经典150题(55-58)
  • 如果一个n位正整数等于其各位数字的n次方之和
  • solidity显示以太坊美元价格
  • ChatGPT学习笔记——大模型基础理论体系
  • Termius for Mac/Win:一款功能强大的终端模拟器、SSH 和 SFTP 客户端软件
  • python如何读取被压缩的图像
  • 华为OD机试 - 寻找最优的路测线路(Java JS Python C)
  • 互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革
  • 计算机组成原理——总线
  • 2023.12.27 关于 Redis 数据类型 List 常用命令
  • 【Web】vulhub-httpd apache解析漏洞复现(1)
  • 市场复盘总结 20240103
  • Java技术栈 —— Redis的雪崩、穿透与击穿
  • Scala知识点——App类
  • (vue)增加行,对应行删除
  • 案例088:基于微信小程序的校车购票平台设计与实现
  • pytorch集智-1安装与简单使用
  • 『番外篇六』SwiftUI 取得任意视图全局位置的三种方法
  • Ribbon相关面试及答案(2024)
  • 【Mybatis】深入学习MyBatis:CRUD操作与动态SQL实战指南
  • 前端uniapp的tab选项卡for循环切换、开通VIP实战案例【带源码/最新】
  • 【我的RUST库】get_local_info
  • 【JUC】Synchronized及JVM底层原理
  • 用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成 --【本人】
  • 深入了解隧道代理HTTP的协议与技术细节
  • 系统运维-Apache服务的基础安装与使用
  • Android 相机库CameraView源码解析 (四) : 带滤镜预览
  • 蜥蜴目标检测数据集VOC格式1400张
  • 2020年认证杯SPSSPRO杯数学建模C题(第一阶段)抗击疫情,我们能做什么全过程文档及程序