博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高放的c++学习笔记之模板与泛型编程
阅读量:4316 次
发布时间:2019-06-06

本文共 861 字,大约阅读时间需要 2 分钟。

函数模板

 

作用

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

我们设计一个比较函数,如果能比较的两个参数是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;
}

 

转载于:https://www.cnblogs.com/icodefive/p/4943732.html

你可能感兴趣的文章
学习java前端 两种form表单提交方式
查看>>
Linux常用命令
查看>>
整体二分&cdq分治 ZOJ 2112 Dynamic Rankings
查看>>
【POJ2976】Dropping tests (01分数规划入门题)
查看>>
通过正则表达式获取url中参数
查看>>
86.运算符重载
查看>>
cxx signal信号捕获
查看>>
《Android开发艺术探索》读书笔记——Cha3.2.3改变布局参数实现View的滑动
查看>>
python闭包与装饰器
查看>>
Acegi 源码解释
查看>>
Activity的几种启动跳转方式
查看>>
LCA最近公共祖先Tarjan(离线)
查看>>
牛客练习赛16 E求值
查看>>
matlab rank
查看>>
Asp.net系列--基础篇(三)
查看>>
css基础
查看>>
如何在tomcat中如何部署java EE项目
查看>>
【Python基础教程第2版】——第二讲:列表和元组
查看>>
小常识
查看>>
使用vscode开发python
查看>>