C++函数模板非类型参数的注意事项有哪些呢

本篇文章为大家展示了C++函数模板非类型参数的注意事项有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

成都创新互联公司主营呼伦贝尔网站建设的网络公司,主营网站建设方案,成都app软件开发公司,呼伦贝尔h5小程序定制开发搭建,呼伦贝尔网站营销推广欢迎呼伦贝尔等地区企业咨询

C++编程语言中的模板应用是一个非常重要的应用技术。那么今天我们就先来了解一下有关C++函数模板非类型参数的一些基本概念,方便大家理解。

C++函数模板非类型参数主要用来为函数提供一个运算常量。关于非类型的函数模板参数,书中有下面的例子:

//函数模板定义  template T addValue(T const& x)  {  return x + VAL;  }  //其他代码  //函数模板的使用  std::transform(source.begin(), source.end(), dest.begin(),  (int(*) (int const&))addValue);

上面的代码中定义了一个函数模板,目的是对传入的参数加上一个指定的int型的5。这样的函数被普遍的使用在对一组数据进行同一处理的场合。例如,12行。这里需要注意的是:一std::transform函数本身就是一个模板函数,它的***一个参数可以传递一个函数指针。

因此,(int(*) (int const&))addValue其实是一个指向实例化后的addValue模板函数的指针。至于这个指针怎么读,还请高手指教。另外需要注意的一点是,std::transform的***一个参数不一定要是模板函数,任何函数都可以(关于std::transform的正确理解参考下面的评论)。只是模板函数更合适处理多种类型的数据罢了。

C++函数模板非类型参数的限制。

关于非类型模板参数的限制目前记住它可以是常整型(包括枚举类型)和指向外部连接对象的指针就可以可了。由于历史原因,浮点型不能作为非类型模板的参数;而指针和字符串作为非类型模板的参数是有条件的。我想这与变量的作用范围和生命周期有关吧。书中后面会有比较相信的介绍,就等到时候再细看了。

上述内容就是C++函数模板非类型参数的注意事项有哪些呢,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


本文题目:C++函数模板非类型参数的注意事项有哪些呢
URL标题:http://scyanting.com/article/jhpsoo.html