码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • c++泛型编程


    c++泛型编程

    一、简介

    1.概念:编写不依赖具体数据类型的程序;

    2.目的:将程序尽可能通用,将算法从数据中抽象出来,成为通用算法;

    3.应用:①c++ 中模板为泛型程序设计提供了基础;②STL(标准模板库)是泛型程序设计的例子;

    二、模板

    1.概念:模板是一种用不确定类型参数来产生一系列函数和类的机制。通过模板我们可以产生类和函数的集合,使他们操作不同的数据类型,从而避免为每一种数据类型单独产生一个函数和类。

    2.分类:函数模板、类模板

    3.函数模板、类模板

    4.工作方式:

    ①函数模板实例化->模板函数;
    ②类模板->实例化->模板类->对象;

    三、函数模板

    1.定义:函数模板使用和普通函数一样,但它的类型可以通过参数来传递,在函数定义时可以不指明具体的数据类型;当发送函数调用时,编译器可根据传入的实参自动推断数据类型。

    2.语法

    template 函数模板定义关键字
    <模板参数表> 用来定义函数参数的类型,参数类型有一个或多个,用逗号隔开,不能为空;
    模板参数表中,class\typename 没有任何区别,都是类型表示符号,可以随意替换。

    template <<模板参数表>>
    <返回值类型> < 函数名>(<参数表>)
    {
    	<函数表>
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    template <typename T>
    void Swap(T& a,T& b)
    {
    	T tmp=a;
    	a=b;
    	b=tmp;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.优点

    (1)代码复用,适合所有类型。克服普通函数弊端;
    (2)编译器会进行类型检查。克服宏定义弊端.

    4.缺点

    (1)调试比较难,对程序员要求高;
    (2)一般编写一个类型确定的函数,运行通过后,再修改成函数模板。

    5.调用方式

    (1)自动类型推导调用 Swap(a,b);
    (2)具体类型显示调用 :Swap(a,b);
    注意:函数模板不允许隐式类型转换,调用时类型必须严格匹配。

    6.原理分析

    (1)函数模板中声明了参数类型T,表示了一种抽象类型
    (2)编译器检查到程序调用函数的时候,根据传递参数的实际类型生成模板函数;

    下一篇【C++泛型编程之类模板】

  • 相关阅读:
    2023年浦东新区数字化安全风险智慧管控技能比武初赛-技能题一
    Kafka消息队列
    2022年统计用区划代码表SQL 01
    6000字Locust入门详解
    【Java和C++】什么是多态
    理解渲染,吃透渲染,你应该知道的Android渲染优化小技巧
    小程序的 web-view 组件:实现点击跳转外部链接的高级技巧
    北大学子荣获SRC全球总决赛本科生第一名!完美世界被曝开 17800 元“付费上班”项目;苹果和安卓有望统一充电接口|极客头条
    香蕉叶病害数据集
    学习总结1
  • 原文地址:https://blog.csdn.net/jun8086/article/details/127631326
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号