博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++模板
阅读量:4085 次
发布时间:2019-05-25

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

C++中模板的介绍:

1、模板的概念

模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。模板可以分为两类,一个是函数模板,另一个就是类模板。

2、函数模板的写法

函数模板的一般形式如下:

Template 
返回类型 函数名(形参表){//函数定义体 }
说明:template是声明模板的关键字,表示声明了一个模板,关键字class不能省略。

例如:

template < class T>T Sum(T x, T y){ return x + y; }
相当于同时声明了许多名字都为Sum的函数,但是输入输出的数据类型未定,可以是int、float、double、或char,真正的函数定义要由编译器判定实际使用的数据类型后才完成。

另外,函数模板常常可以用来取代函数的重载,例如:

template < class T>T Abs(T x){ return (x>0)?x:-x; }
相当于同时定义了

int Abs(int x){ return (x>0) ? x : -x; }double Abs(double x){ return (x>0) ? x : -x; }float Abs(float x){ return (x>0) ? x : -x; }
3个函数。
****************

看下例:

#include "stdafx.h"#include 
using std::cout;using std::endl;//声明一个函数模版,用来比较输入的两个相同数据类型的参数的大小,class也可以被typename代替,//T可以被任何字母或者数字代替。template
T min(T x, T y){ return(x < y) ? x : y;}void main(){ int n1 = 2, n2 = 10; double d1 = 1.5, d2 = 5.6; cout << "较小整数:" << min(n1, n2) << endl; cout << "较小实数:" << min(d1, d2) << endl; system("PAUSE");}

程序分析:调用min(n1,n2)即实例化函数模板中T的类型为int型;同理min(d1,d2)实例化为double型,求出d1,d2的最小值。

3、类模板的写法

定义一个类模板

Template < class或者也可以用typename T >class类名{//类定义......};
说明:其中,template是声明各模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个。

例子:

// Header.h

#ifndef ClassTemplate_HH#define ClassTemplate_HHtemplate
class myClass{private: T1 I; T2 J;public: myClass(T1 a, T2 b);//Constructor void show();};//这是构造函数//注意这些格式template
myClass
::myClass(T1 a, T2 b) :I(a), J(b){}//这是void show();template
void myClass
::show(){ cout << "I=" << I << ", J=" << J << endl;}#endif
 

// Test.cpp

// Test.cpp#include "stdafx.h"#include 
#include "Header.h"using std::cout;using std::endl;void main(){ myClass
class1(3, 5); class1.show(); myClass
class2(3, 'a'); class2.show(); myClass
class3(2.9, 10); class3.show(); system("PAUSE");}
输出:

你可能感兴趣的文章
JavaScript实现DOM树的深度优先遍历和广度优先遍历
查看>>
webpack4 中的 React 全家桶配置指南,实战!
查看>>
react 设置代理(proxy) 实现跨域请求
查看>>
通过试题理解JavaScript
查看>>
webpack的面试题总结
查看>>
实践这一次,彻底搞懂浏览器缓存机制
查看>>
Koa2教程(常用中间件篇)
查看>>
React Hooks 完全指南
查看>>
React16常用api解析以及原理剖析
查看>>
教你发布你npm包
查看>>
nvm 和 nrm 的安装与使用
查看>>
React Hooks 一步到位
查看>>
React Redux常见问题总结
查看>>
前端 DSL 实践指南
查看>>
ReactNative: 自定义ReactNative API组件
查看>>
cookie
查看>>
总结vue知识体系之实用技巧
查看>>
PM2 入门
查看>>
掌握 TS 这些工具类型,让你开发事半功倍
查看>>
前端如何搭建一个成熟的脚手架
查看>>