C++模板技术实现 泛型编程,通俗易懂的泛型编程教程//。

目录

一:泛型编程

1.1:泛型编程的引出

1.2:函数模板的简单使用

二:模板技术的基本格式

(1)类模板

​编辑

(2)函数模板

三:函数模板的使用

3.1:自动推导类型

3.2:显示指定类型

3.3:模板函数局限

四:类模板的使用


一:泛型编程

1.1:泛型编程的引出

我们直接通过两段代码来看一下,为什么会出现泛型编程:

 对于这两个函数来说,他们函数体实现的功能是完全相同的(交换两个参数的值),唯一的区别就在于他们的参数类型不同相同功能的代码因为参数类型的不同而被重复开发,这样就造成代码的冗余。

所以为了应对这样的情况,就出现了一种模板技术。

1.2:函数模板的简单使用

如果我们使用函数模板去实现这个功能,就不会出现因为参数类型原因,同类型代码重复开发的情况。

 可以看到。我们使用同一个函数模板去操作交换两种不同类型的数据时,是完全可以实现的,这样就很好的避免的相同功能代码被重复开的的情况。

二:模板技术的基本格式

模板编程分为两类:

(1)类模板

 紧跟在template<class T>下面的是类,那么就被称为类模板 

(2)函数模板

  紧跟在template<typename   T>下面的是函数,那么就被称为函数模板 。

这里注意:  typename与class的作用是完全相同的。当然一个模板其实不只能有一个泛型,如果需要,还可以在<>中用逗号拼接符继续拼接。

三:函数模板的使用

3.1:自动推导类型

在使用函数模板时,像调用普通函数那样直接调用,不显示指定类型,编译器会自动根据参数的类型进行推导,从而确定泛型的类型。 

3.2:显示指定类型

在使用函数模板时,我们也可以指定泛型的类型,然后再传入参数,当然参数的类型需要和指定的类型一致。当我们指定的泛型的类型时,编译器就不会进行自动类型推导了。 

3.3:模板函数局限

我们在使用普通函数交换int类型数据和char类型数据时,形参使用两个int类型数据接收是不会出问题的,因为编译器是会对char类型进行整形提升的(主要还是因为char也是属于整形家族的)。但是对于模板函数来说,是不能进行类型转换的。

当模板函数与普通函数发生重载时,如果参数匹配的话系统是会默认优先调用普通函数的,(因为不需要进行推导)。但如果我们指定要调用模板函数,那么在调用时,在函数名后加一个<>就可以了。

 

四:类模板的使用

在使用类模板实例化对象时,必须显示指定类型,不然无法实例化对象。

因为在实例化对象时,需要给对象分配空间,如果不指定类型,编译器不知道该分配多大的

空间给对象。 

当然我在上面的教程中,使用的类型都是基本的类型便于理解,我们也可指定自定义的类型。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值