关注“杜明c”,每天进步一点点!

我们学习C++,就常常有人提起泛型编程,什么是泛型编程?我就给大家简单聊一聊。

摘要

-

  • 什么是泛型编程

  • 为什么使用泛型编程

  • 使用方法

什么是泛型编程

泛型编程,简而言之,就是在编程中使用不明确的数据类型,他最大的一个特点就在这个“泛”字,让一套源码适用不同类型的元素。那么这个泛型编程具体什么作用呢?比如我们要我们要写一个求两个数的最大值的函数,一般来说我们都这么实现。

int max(int a, int b){    return a>b?a:b;}

一旦数据的类型发生改变,那么代码就得改一改,这依然很好实现,利用用函数的重载就可以实现。

double max(double a,double b){    return a>b?a:b;}

为什么要使用泛型编程

可是当要求是float型数据的时候,我们就需要添加更多的代码,这无疑增加了很多繁琐的工作,

这时候函数模板就派上了用场。

template <typename T>  //定义一个类型TT max(T a, T b)    //函数定义{    return a>b?a:b;}cout << max<int>(1,5) << endl;//函数调用----out----5

使用一个函数模板就可以实现这个函数,让我们专注于逻辑实现,而不是繁琐的重复工作。

使用方法

除了函数模板之外,我们还可以使用类模板,他们的用法是一样的。

  • 函数模板

  • 类模板

template //函数模板T max(T a, T b)    {    return a>b?a:b;}class base {public:  base(T new_a)  {    a = new_a;  }  T a;  T fun() {    return a;  }};

那么怎么使用呢?其实也很简单。

base<int> a(4);cout << a.fun() << endl;cout << max<int>(1,4) << endl;----out----44

下一章应用篇,说的是使用类模板构造一个vector容器,有兴趣的同学可以看看。

留言区

End

杜明c

专注C/C++

长按关注

泛型参数怎么new_泛型编程,你不知道?(基础篇)相关推荐

  1. Spring+SpringMVC+MyBatis整合基础篇

    基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...

  2. java 泛型参数_[基础]-Java泛型

    一.概述 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的 ...

  3. Java基础篇:泛型

    文章目录 1.为什么要有泛型 2.在集合中使用泛型 3.自定义泛型结构 4.泛型在继承上的体现 5.通配符的使用 1.为什么要有泛型 泛型:标签 泛型背后的核心思想就是:把一个集合中的内容限制为一个特 ...

  4. More Effective C# Item3 : 运行时检查泛型参数的类型并提供特定的算法

    我感觉这一条目应该算是对Item2的补充,还是在"约束"的条件下,如何使得程序得到最优化的结果,颇有"带着脚铐跳芭蕾"的意味.Item2中的条目可以看做是在有约 ...

  5. typescript箭头函数参数_Typescript 入门基础篇(一)

    Typescript 基础 Typescript是Javascript的一个超集.以下typescript简称为ts, 此文章主要是对ts官网文档的一个简化,缩短学习基础时间. 类型基础 ts 的类型 ...

  6. 由美团技术文章整理---spark性能优化基础篇--开发调优与资源参数调优

    文章地址1:Spark性能优化指南--基础篇 - 美团技术团队 文章地址2:Spark性能优化指南--高级篇 - 美团技术团队 目录 一.关于性能优化基础篇--开发调优 1.避免创建重复RDD (1) ...

  7. ParameterizedType获取java泛型参数类型

    这两天在看以前写的ssh项目时,遇到一个问题就是封装的BaseDaoImpl抽象类,构造方法里面是这样写的 Class<T> clazz;public BaseDaoImpl(){Para ...

  8. Unity TIP4: 带泛型参数的接口注入(interface,generic)

    一:第一类需求 接口和类定义如下: public interface ISample<T> {} public class Sample : ISample<SomeClass2&g ...

  9. Java泛型之泛型参数

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java专业知识,广州疯狂java培训为你讲解; 泛型机制常用的参数有3个: & ...

最新文章

  1. 1084 Broken Keyboard
  2. mysql远程连接问题
  3. (转)datagridview 自定义列三步走
  4. 去除桌面图标蓝底的方法步骤
  5. kindle亚马逊个人文档不显示_4.68亿个人信息泄露,大数据时代裸奔?探悉不落地的文档在线预览...
  6. silverlight中如何将string(字符串)写入Resource(资源)?
  7. 体积最小桌面linux,Tiny Core Linux - 体积最小的精简 Linux 操作系统发行版之一 (仅10多MB)...
  8. 牛客 数学实验(模拟)
  9. 做产品经理的第1年、第5年和第10年...
  10. Glide 4.x之生命周期与Activity的绑定原理详解
  11. STM32F103系列(二):如何使用串口下载程序
  12. 淘宝API签名异常,如何正确计算SIGN参数?(error code:25 Invalid Signature)
  13. JWT解析及安全问题
  14. AlarmClock slow alarm Alarm
  15. PUM-main makefile报错 #error -- unsupported GNU version gcc versions later than 6 are not supported
  16. UVA 10387 Billiard
  17. 【时间序列分析】05.谱函数与谱密度
  18. 利用正则表达式来验证邮箱
  19. linux-网站服务
  20. Android APPUI设计、切图的常用尺寸大全

热门文章

  1. int x = 0x13 c语言,2004年7月全国高等教育自学考试微型计算机原理与接口技术试题...
  2. java实现社交平台_GitHub - akpaul9527/symphony: 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台。...
  3. DataTables怎么给某一列加上click事件
  4. MSP430F5529 DriverLib 库函数学习笔记(八)模数转换模块(ADC12)
  5. CC254x--BLE
  6. Linux系统下.ko文件是什么文件?.so文件是什么文件?
  7. 枚举windows进程
  8. 解决列表某项文字过度过多 需要自适应撑开高度展示 其他项目按照行高居中
  9. 不带缓存的I/O和标准(带缓存的)I/O
  10. React开发(102):别写立即执行函数