【C/CPP】模板与泛型编程

您所在的位置:网站首页 类模板和函数模板 【C/CPP】模板与泛型编程

【C/CPP】模板与泛型编程

2023-04-27 22:42| 来源: 网络整理| 查看: 265

泛型编程(generic programming)在实现时不指定具体要操作的数据类型,只要实现一遍,就能适用于多种数据类型。泛型程序设计方法的优势在于能够减少重复代码的编写。

数据类型可以通过参数来传递,在函数定义时可以不指明具体的数据类型,当函数调用时,编译器根据传入的实参自动判断数据类型,即类型的参数化。

强类型语言与弱类型语言

编程语言根据“在定义变量时是否需要显式地指明数据类型”可以分为强类型语言和弱类型语言。

强类型语言在定义变量时需要显式地指明数据类型,一旦为变量指明了某种数据类型就不能赋予其他类型的数据,除非进行强制类型转换或隐式类型转换。 弱类型语言在定义变量时不需要显示地指明数据类型,编译器或解释器会根据赋值变量地数据自动推导类型。 函数模板

函数模板(Function Template),实际上是建立一个通用函数,其数据的类型(包括返回值类型、形参类型、局部变量类型)可以不具体指定,而是用一个虚拟的类型来代替(实际上是用一个标识符来占位),等发生函数调用时再根据传入的实参来逆推出真正的类型。

123456templatevoid Swap(T &a, T &b) { T temp = a; a = b; b = temp;}

template是定义函数模板的关键字,typename关键字用来声明具体的参数类型。

class关键字也可以用作函数模板声明,有很多代码中使用了class关键字,但是在新的代码中建议使用template,因为class已经用于类的定义中。

类模板

类模板(Class Template)中定义的类型参数可以用在类声明和类实现中。类模板的目的同样是将数据的类型参数化。

声明类模板的语法:

123456789templateclass 类名{ // TODO: };template返回值类型 类名::函数名(形参列表){ //TODO:}

类模板的类型参数可以用于类的成员函数和成员变量。

使用类模板创建对象时,需要显示地指明具体的数据类型。

12vector first(4, "first");vector *pSecond = new vector(4, "second");


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3