首页 > 编程语言 >c++函数模板

c++函数模板

时间:2024-01-20 22:36:45浏览次数:23  
标签:通用 函数 c++ 普通 类型 模板

一.模板

概念:
就是建立通用的摸具,大大提高复用性
特点:
  1. 模板不可以直接使用,它只是一个框架
  2. 模板的通用并不是万能的
    c++提供两种模板机制函数模板类模板

二.函数模板

作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表

image
image
image

三.函数模板注意事项

1.自动类型推导,必须推导出一致的数据类型T,才可以使用
2.模板必须要确定出T的数据类型,才可以使用
image

四.普通函数和函数模板的区别四.普通函数和函数模板的区别

image
总结:建议使用显示指定类型的方式,使用函数模板,因为可以自己确定通用类型T

五.普通函数与函数模板的调用规则五.普通函数与函数模板的调用规则

image
总结:既然提供了函数模板,最后不要提供普通函数,否则容易出现二义性

六.函数模板的局限性六.函数模板的局限性

image
image

标签:通用,函数,c++,普通,类型,模板
From: https://www.cnblogs.com/Eric0521/p/17977241

相关文章

  • 记忆函数的实战应用
    力扣2623.记忆函数今天在力扣做了一道题:使用JavaScript实现记忆函数,所谓记忆函数就是一个对于相同的输入永远不会被调用两次的函数。相反,它将返回一个缓存值。以下是使用哈希表实现的方法:/***@param{Function}fn*@return{Function}*/functionmemoize(fn){co......
  • C++U3-第11课-单、双链表
    学习目标 链表概念计算机存储结构 单链表 实现单链表       删除 插入节点  双向链表  实现双链表         [【数据结构-链表】猴子选大王] 【题意分析】通过循环报数的方式每一次剔除......
  • C++编译全过程
    1.源文件.cpp2.预处理:将所有的#include头文件以及宏定义替换成其真正的内容(删除所有的注释、宏扩展、文件包含).i3.汇编:转换为汇编语言.s4.编译:转换为二进制机器码.o(目标文件)5.链接:链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(executablefile)......
  • 关于C++符号表
    符号表是程序/单元中“符号”的列表。符号通常是变量或函数的名称。符号表可用于确定变量或函数在内存中的位置。简而言之,SymbolTable是分配给函数&变量的名称与其在内存中的地址的映射,包括类型、范围和大小等元数据。最终由编译器使用。通常,C或C++编译器将单个源文件编译......
  • js 异步函数策略
    因为简单实用,所以异步函数很快成为JavaScript项目使用最广泛的特性之一。不过,在使用异步函数时,还是有些问题要注意。实现sleep()很多人在刚开始学习JavaScript时,想找到一个类似Java中Thread.sleep()之类的函数,好在程序中加入非阻塞的暂停。以前,这个需求基本上都通过set......
  • js 异步函数的返回值
    函数可以得到它返回的期约:asyncfunctionfoo(){console.log(1);return3;}//给返回的期约添加一个解决处理程序foo().then(console.log);console.log(2);//1//2//3当然,直接返回一个期约对象也是一样的:asyncfunctionfoo(){console.log(1);returnProm......
  • std::declval 元函数
    declval用于非求值上下文中declval原形:template<typename_Tp>autodeclval()noexcept->decltype(__declval<_Tp>(0)){static_assert(__declval_protector<_Tp>::__stop, "declval()mustnotbeused!");return__declval&l......
  • C++模板例子
    title:"C++模板例子"date:2023-11-02T01:05:25+08:00tags:["C++"]categories:[]draft:falsetoc:true#include<vector>#include<type_traits>usingnamespacestd;classAA{};classBB{};classTest{public:templ......
  • 【C++入门到精通】 C++入门—命名空间
    前言    前面我们学习了C语言,并且知道了C语言的基础语法与用途。接下来一段时间我们会再来学习一下基于C语言并且根据C语言改造的一门新的语言—C++     硕硕相信只要各位大佬们跟着我的博客看下去,肯定能有不少的收获。二话不说咱们要开车了,坐稳扶好呦C++的发展历......
  • Python中的回调函数
    先来看一个程序:deff1():print(2)return1deff2(a):print(3)returnaprint(f2(f1()))这个程序,在调用时,f2会先等待f1调用完毕,返回1之后,再进行调用,所以会输出2、3、1,但是若这样改写程序deff1():print(2)return1deff2(f):prin......