高放的c++学习笔记之模板与泛型编程
函数模板
作用
有很多时候参数的类型以及返回值的类型是可变的,我们通过定义模板来让函数能更灵活的运用。
我们设计一个比较函数,如果能比较的两个参数是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;
}
最新文章
- mogodb3.2源码安装
- 在XE5中 VCL空窗体的3个线程
- 集成Spring事物管理
- solr5.5教程-tomcat布署
- 推荐一个Xcode插件: KSImageNamed (自动补全图片文件名称, 并显示图片大小)
- Php和httpd.conf的配置
- 1.3 selenium IDE录制脚本转换为其他代码格式
- 详解Tomcat的连接数和线程池
- 整数中x出现的次数
- Django Cache缓存系统学习--数据库缓存
- Centos7.3_x86_64通过systemctl控制tomcat8.0.46启动和停止
- Confluence 6 配置管理员会话安全的备注
- C# winform 窗体怎么隐藏标题栏,不显示标题栏
- Centos6.5下升级Python版本
- Linux磁盘管理,vi编辑器以及包管理器
- WebAPI Post接收数据
- ruby文件操作
- Eclipse.修改项目的JDK版本
- docker阿里云镜像加速器使用
- 获取 python import模块的路径
热门文章
- js中undefined,null,NaN的区别
- 全表扫描引发的db file sequential read
- Windows 10 代理上网用户的正确使用姿势
- 适配ios7
- android改动tab 导航 指示器颜色
- Python标准库:内置函数bytearray([source[, encoding[, errors]]])
- poj 3046 Ant Counting (DP多重背包变形)
- 分层模型的典型应用和FishiGUI的分层模型
- txt文件导入mysql--转
- 修改MySQL引擎