C++11模板函数与返回类型后置举例分析
这篇文章主要介绍“C++11模板函数与返回类型后置举例分析”,在日常操作中,相信很多人在C++11模板函数与返回类型后置举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++11模板函数与返回类型后置举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
渐进式说明
最简单的情况
先考虑我们有一个函数,功能是从一个整数数组中取得其中一个元素。
代码很简单,但这只是一个引子。本文的所有示例代码都不考虑下标越界的情况,这样可以更加突出主题。
适用于其他类型
如果希望这个函数可以适应更多类型的数组,只要引入模板即可。
也没难多少。
更加通用
如果除了数据类型可以扩展之外,还希望可以将其应用于vector的话,就没有那么容易了。例如下面的代码是不能通过编译的。
不能通过编译是由于解引用不是数据类型,而是操作。如果模板变量为T,而返回值为T*的话是可以正常编译的。
解决这个问题的方法是使用前面讲到过的C++11新特性:返回值类型后置和decltype。代码如下:
由于decltype需要取得it解引用的类型,所以取得返回值类型的操作必须在it出现之后,即所谓的返回值类型后置。有了这个模板函数之后,下面的3中情况,代码都能够正确无误地执行:
其他的情况
这种做法不仅适用与解引用的场景,其他可以通过参数取得返回值类型的情况也有效。例如从下面的DblPoint和IntPoint结构体取得成员x的情况:
可以这样定义模板函数:
到此,关于“C++11模板函数与返回类型后置举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!