C++11模板函数与返回类型后置举例分析

这篇文章主要介绍“C++11模板函数与返回类型后置举例分析”,在日常操作中,相信很多人在C++11模板函数与返回类型后置举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++11模板函数与返回类型后置举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

渐进式说明

最简单的情况

先考虑我们有一个函数,功能是从一个整数数组中取得其中一个元素。

C++11模板函数与返回类型后置举例分析

代码很简单,但这只是一个引子。本文的所有示例代码都不考虑下标越界的情况,这样可以更加突出主题。

适用于其他类型

如果希望这个函数可以适应更多类型的数组,只要引入模板即可。

C++11模板函数与返回类型后置举例分析

也没难多少。

更加通用

如果除了数据类型可以扩展之外,还希望可以将其应用于vector的话,就没有那么容易了。例如下面的代码是不能通过编译的。

C++11模板函数与返回类型后置举例分析

不能通过编译是由于解引用不是数据类型,而是操作。如果模板变量为T,而返回值为T*的话是可以正常编译的。

解决这个问题的方法是使用前面讲到过的C++11新特性:返回值类型后置和decltype。代码如下:

C++11模板函数与返回类型后置举例分析

由于decltype需要取得it解引用的类型,所以取得返回值类型的操作必须在it出现之后,即所谓的返回值类型后置。有了这个模板函数之后,下面的3中情况,代码都能够正确无误地执行:

C++11模板函数与返回类型后置举例分析

其他的情况

这种做法不仅适用与解引用的场景,其他可以通过参数取得返回值类型的情况也有效。例如从下面的DblPoint和IntPoint结构体取得成员x的情况:

C++11模板函数与返回类型后置举例分析

可以这样定义模板函数:

C++11模板函数与返回类型后置举例分析

到此,关于“C++11模板函数与返回类型后置举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!