C++ Template 基础篇(一):函数模板 |
您所在的位置:网站首页 › 大模板的定义是什么 › C++ Template 基础篇(一):函数模板 |
Template 基础篇-函数模板
Template所代表的泛型编程是C++语言中的重要的组成部分,我将通过几篇blog对这半年以来的学习做一个系统的总结,本文是基础篇的第一部分。 Template 基础篇-函数模板 为什么要有泛型编程函数模板定义 普通函数模板成员函数模板为什么成员函数模板不能是虚函数virtual 实参推断 如何使用当返回值类型也是参数时实参推断时的自动类型转换 函数模板重载模板函数特化 为什么要有泛型编程C++是一门强类型语言,所以无法做到像动态语言(python javascript)那样子,编写一段通用的逻辑,可以把任意类型的变量传进去处理。泛型编程弥补了这个缺点,通过把通用逻辑设计为模板,摆脱了类型的限制,提供了继承机制以外的另一种抽象机制,极大地提升了代码的可重用性。 注意:模板定义本身不参与编译,而是编译器根据模板的用户使用模板时提供的类型参数生成代码,再进行编译,这一过程被称为模板实例化。用户提供不同的类型参数,就会实例化出不同的代码。 函数模板定义把处理不同类型的公共逻辑抽象成函数,就得到了函数模板。 函数模板可以声明为inline或者constexpr的,将它们放在template之后,返回值之前即可。 普通函数模板下面定义了一个名叫compare的函数模板,支持多种类型的通用比较逻辑。 template int compare(const T& left, const T& right) { if (left < right) { return -1; } if (right < left) { return 1; } return 0; } compare(1, 2); //使用模板函数 成员函数模板不仅普通函数可以定义为模板,类的成员函数也可以定义为模板。 class Printer { public: template void print(const T& t) { cout |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |