C++泛型编程 您所在的位置:网站首页 模板与泛型编程的关系 C++泛型编程

C++泛型编程

2023-12-13 11:04| 来源: 网络整理| 查看: 265

泛型编程 模板技术 模板实例化模板的使用模板参数 模板特化 函数模板特化类模板特化 容器适配器分离编译模式

泛型编程

泛型编程是编写和类型无关的逻辑代码,是代码复用的另一种手段。模板是实现泛型编程的一种技术。

以往要编写一个通用的函数有3种方法,函数重载,使用公共基类,宏函数。

然而函数重载需要对各种类型一一枚举,且一个错个个错。第二种继承公共基类并重写虚函数实现多态,失去了类型检查,对每一个子类维护也很麻烦。宏函数也没有类型检查。

实现Vector和List容器:https://github.com/zzaiyuyu/Vector-List

模板技术 模板实例化

不管是类模板或是函数模板,都不是真正的类或函数,只是一个编译器用来生成代码的蓝图。

模板的实例化指函数模板(类模板)生成模板函数(模板类)的过程。对于函数模板而言,模板实例化之后,会生成一个真正的函数。而类模板经过实例化之后,只是完成了类的定义,模板类的成员函数需要到调用时才会被初始化。模板的实例化分为隐式实例化和显示实例化。

隐式实例化:在发生模板函数调用或者模板类时,才进行实例化。

//隐式实例化函数模板 template T Max(const T& t1,const T& t2){ return (t1>t2)?t1:t2; } //隐式实例化类模板 template class A{ T num; }

显示实例化:不管有无调用,只要显式声明,必定实例化出模板类或函数

//用template声明一下函数模板 template void func(const int&); //类模板 template class theclass; 模板的使用

对函数模板的使用而言,分为两种调用方式,一种是显示模板实参调用(显示调用),一种是隐式模板实参调用(隐式调用)。对于类模板的使用而言,没有隐式模板实参和显式模板实参使用的说法,因为类模板的使用必须显示指明模板实参

隐式调用,编译器根据调用的实参推演出匹配的模板函数。显示调用,由用户决定调用的实参类型,不经过参数推演 template T Max(const T& t1,const T& t2){ return (t1>t2)?t1:t2; } int main(){ int i=5; cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有