c++类模版
来源:互联网 发布:网络课程建设方案 编辑:程序博客网 时间:2024/06/06 05:38
模板顾名思义就是对一类事物的总结,找到共同点,取而代之,省去了很多重复。
1,模板函数
如果说想要比较两个整数的大小,那么你需要写一个这样的方法
int Max(int a, int b){return (a > b)?a:b;}如果你想要比较两个浮点数的大小,那么上面的函数便不能再用了,需要另写
double Max(double a, double b){return (a > b)?a:b;}
template <class T>T Max(T a, T b){return (a > b)?a:b;}
看到这个是不是简单了很多,无论什么类型基本都可以用,至少不会纠结于int还是double了。
当然,写模板的需要注意的是这一行,template <class T>;尤为重要,表示声明一个模板。然后下面就可以用了。而且这句话貌似只对紧挨着的代码有效。如果想要写两个模板函数,那么就需要声明两次模板了。
2.类模版
其实和函数模板有点像,但还是不一样的。
先看一个例子吧
template <class T>class Compare{public:Compare(T a, T b){m_x = a;m_y = b;}Compare(){}T Max(T a, T b){return (a > b)?a:b;}T Min(T a, T b){return (a < b)?a:b;}public:int m_x;int m_y;};
既然是类,必须要先声明一个对象吧。
Compare<int> obj(2, 4);是不是感觉怪怪的,但是和STL又有点像。对的,STL的源代码就是用模板写的。
类名后面尖括号里面的是在表名类的类型,使用模板当然要表名你是什么类型了,要不然它怎么认得。但是使用,模板函数不是这样的,在调用的时候,直接填写参数即可,其实参数就是在表名自己的类型而已。
下面的使用一切正常,想用类里面哪个函数用就可以了。
上面的例子是类函数的实现是写在类里面的,如果写在类外面该怎么办呢?
template <class T>T Compare<T>::Min(T a, T b){return (a < b)?a:b;}还需要再声明一次类模板,然后就没什么区别了。
3.如果需要多个类型,可以这样声明类模版
template <class T1, class T2>
0 0
- 【C++】模版矩阵类
- C++——模版:类模版
- c语言图形模版
- 用C也能写模版
- 模版文件 target.c
- 邻接表模版c+
- Template模版实例(C++)
- C++template--函数模版
- 【c++】函数模版
- c++模版
- 【C++】认识模版函数
- C/C++模版
- 模版——函数模版、类模版
- C++——模版:函数模版
- 模版类
- 模版类
- 类模版
- 模版类
- 华为OJ
- 云计算课程详解
- 第九周项目三 b
- kmp
- 2015百度校园招聘移动端研发工程师面试小计(Android篇)
- c++类模版
- 第九周项目三——输出星号图
- C# 中的委托和事件
- Xcode没有pch文件
- java变量基础
- HDOJ 1015 Safecracker
- Windows线程、界面、消息剖析
- 第九周项目二 分数的累加
- Linux ALSA声卡驱动六之ASoC架构中的Machine