美文网首页
c++template-基础篇(一)

c++template-基础篇(一)

作者: 7bfedbe4863a | 来源:发表于2018-12-14 16:06 被阅读0次
什么是函数模板?

函数模板提供了一种函数行为,该函数行为可以用多种不同的类型进行调用,它和普通函数很相似,唯一的区别就是有些函数元素是未确定的,这些元素将在使用时被参数化。

一个简单的函数模板
template <typename T>
inline T const& max(T const&a, T const&b)
{
    return a<b?b:a;
}

只要使用函数模板,编译器会自动地引发一个实例化过程,使用者不需要额外地请求模板的实例化。

编译过程中,模板会被编译两次,分别是:

  • 实例化之前,先检查模块代码本身,查看语法是否正确,比如遗漏;等错误是在这里发现的。
  • 实例化期间, 检查模块代码,查看是否所有的调用都有效。

一定要让所有的函数模板的声明在被调用的位置之前!

重载函数模板实例化顺序
  • 一个非模板函数和一个同名的模板函数同时存在时,一般条件相同时会先实例化非模板函数
  • 然而,如果模板可以产生一个更好匹配的函数,那么将选择模板
  • 可以显示地指定一个空的模板实参列表,表明只有模板来匹配该调用, 而且所有的模板参数都应该根据实参演绎出来
  • 模板不允许自动类型转换;但是普通函数可以进行自动类型转换,所以调用需要自动类型转换的将使用非模板函数。

相关文章

  • c++template-基础篇(一)

    什么是函数模板? 函数模板提供了一种函数行为,该函数行为可以用多种不同的类型进行调用,它和普通函数很相似,唯一的区...

  • c++template-基础篇(二)

    什么是类模板? 通常被用于管理某种特定类型的元素,容器类就是其中的一个典型例子。它可以用于实现容器类而不需要确定容...

  • 最新web前端相关课程学习链接

    js基础篇 js进阶篇 js高级篇 vue基础篇 vue高级篇 react基础 react高级 Nodejs基础 ...

  • Java工程师成神之路

    基础篇进阶篇高级篇架构篇扩展篇推荐书籍 基础篇 一、基础篇JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈...

  • axios进阶之路——基础篇

    本课题包含三篇:基础篇;拦截器篇;封装篇。本篇为基础篇,主题为axios基础介绍及安装使用。 一、 关于Axios...

  • (一)基础篇

    学习小程序开发有一段时间了,也自己试着上线小程序,只不过我的是个人版,做了个旅行日记功能的小程序,然后腾讯不让上线...

  • 线上思维导图课程总结

    一、学习内容 学习的内容:基础篇、学习篇、运用篇。包括基础篇的:思维导图开启全新思维、开通基础篇学习了思维导图...

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • iOS 动画基础总结篇

    iOS 动画基础总结篇 iOS 动画基础总结篇

  • Hybrid APP - 混合式开发

    Hybrid APP基础篇(一)->什么是Hybrid App Hybrid APP基础篇(二)->Native、...

网友评论

      本文标题:c++template-基础篇(一)

      本文链接:https://www.haomeiwen.com/subject/nbduhqtx.html