函数模板

作用

有很多时候参数的类型以及返回值的类型是可变的,我们通过定义模板来让函数能更灵活的运用。

我们设计一个比较函数,如果能比较的两个参数是int型的,两个参数也可能都是string型的,单独设计出两个比较的函数就会比较繁琐,此时,我们用到了函数模板。
template<typename T>
int cmp(T a, T b){
  return a>b;
}

(1)每次调用的时候,编译器用推断出的模板参数来为我们实例化一个特定版本的函数,T可被替换成任意类型。
(2)template可被class替换,两个的作用是相同的。

类模板

定义类模板

类模板的定义与模板函数的定义类似,但是声明对象的时候略有不同

template<typename T>class gg{
public :

T a;

  gg(T aa):a(aa){};

};

gg<string> g("asa");      //声明部分

 

非类型模板参数

除了定义类型参数外,还可以在函数中定义非类型参数,一个非类型参数表示一个值而非一个类型。

例如

template<typename T, unsigned n>class gg{
public :
  T a;
  gg(T aa):a(aa){};
  int aa();
};

inline和constexpr函数模板

和正常定义函数一样,将inline或constexpr写在模板之后函数体类型之前。

类模板的成员函数

template<typename T, unsigned n>      //表示接下来的是一个模板

int gg<T, n>::aa(){              //通过gg<T, n>找到函数对应的类
  for(int i = 0;i < n; i++)printf("gaofangzuishuai\n");
  return a;
}

最新文章

  1. mogodb3.2源码安装
  2. 在XE5中 VCL空窗体的3个线程
  3. 集成Spring事物管理
  4. solr5.5教程-tomcat布署
  5. 推荐一个Xcode插件: KSImageNamed (自动补全图片文件名称, 并显示图片大小)
  6. Php和httpd.conf的配置
  7. 1.3 selenium IDE录制脚本转换为其他代码格式
  8. 详解Tomcat的连接数和线程池
  9. 整数中x出现的次数
  10. Django Cache缓存系统学习--数据库缓存
  11. Centos7.3_x86_64通过systemctl控制tomcat8.0.46启动和停止
  12. Confluence 6 配置管理员会话安全的备注
  13. C# winform 窗体怎么隐藏标题栏,不显示标题栏
  14. Centos6.5下升级Python版本
  15. Linux磁盘管理,vi编辑器以及包管理器
  16. WebAPI Post接收数据
  17. ruby文件操作
  18. Eclipse.修改项目的JDK版本
  19. docker阿里云镜像加速器使用
  20. 获取 python import模块的路径

热门文章

  1. js中undefined,null,NaN的区别
  2. 全表扫描引发的db file sequential read
  3. Windows 10 代理上网用户的正确使用姿势
  4. 适配ios7
  5. android改动tab 导航 指示器颜色
  6. Python标准库:内置函数bytearray([source[, encoding[, errors]]])
  7. poj 3046 Ant Counting (DP多重背包变形)
  8. 分层模型的典型应用和FishiGUI的分层模型
  9. txt文件导入mysql--转
  10. 修改MySQL引擎