当前位置: 首页> 房产> 建筑 > 九、C++11常用新特性—模板的优化

九、C++11常用新特性—模板的优化

时间:2025/7/14 14:03:58来源:https://blog.csdn.net/qq_45180349/article/details/140295125 浏览次数:0次

1.模板的右尖括号

在泛型编程种,模板实例化有一个非常繁琐的地方,那就是连续的两个右尖括号(>>)会被编译器解析成右移操作,而不是模板参数表的结束,在C++11以前需要在>>之间加上一个空格> >。C++11之后就不需要再加上空格,改进了编译器的解析规则,尽可能的将多个右尖括号解析成模板参数结束符。

2.默认模板参数

c++11之前只允许对类模板提供默认参数,但是不支持函数模板的默认参数,c++11之后添加了函数模板的默认参数例如:

#include<iostream>
using namesapce std;templete <typename T = int> //函数模板提供默认参数
void func(T t){}

当所有模板参数都有默认参数时,函数模板的调用如同一个普通函数。但对于类模板而言,哪怕所有参数都有默认值,在使用也必须在类模板名后跟随<>来实例化。

如图对于存在默认参数的函数模板来说可以调用,而对于存在默认参数的类模板来说,还需要加上<>。

另外,函数模板的默认模板参数在使用规则上和其他的默认参数有一些不同,他没有必须写在参数表的最后的限制。

当默认模板参数和模板参数自动推导同时使用时候:

  • 直接使用创建时给定的类型。
  • 如果可以推导出参数类型则使用推导出的类型。
  • 如果函数模板无法推导出参数类型,那么编译器会使用默认模板参数。
  • 如果无法推导出模板参数类型并且没有设置默认模板参数,编译器就会报错。

--------------------------------------------------------------------------------

如果上述有错欢迎大家指正。

关键字:九、C++11常用新特性—模板的优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: