模板函数template functions和模板类的基本区别template class
来源:互联网 发布:微电影剪辑软件 编辑:程序博客网 时间:2024/05/01 04:58
通过侯老师编写的书籍MFC中,对Template有了一个更加深刻的认识。
首先,介绍模板函数template functions:
计算一个数值幂次方,函数名为power。该函数只接受正幂次方数,如果为负幂次方,使结果为0.
模板函数中,<class T>只不过是表示:T是一种类型,该类型可以是int,long,也可以是double类型,而此一类型将在调用此函数时才给予。
下面是power函数的template版本:
template<class T>
T power(T base,int exponent)
{
T result=base;
if(exponent==0)
return (T)1;
if(exponent<0)
return (T)0;
while(--exponent)
result *=base;
return result;
}
注意返回值必须为类型T,以吻合template函数的声明。
下面是template函数的调用方法:
#include "iostream.h"
void main()
{
int i=power(5,4);
long l=power(1000L,3);
cout<<"i= "<<i<<endl;
cout<<"l= "<<l<<endl;
}
结果为:
i=625
l=1000000000
在第一次调用时,T变成了int,在第二次调用中T变成了long。
下面是模板类template classes的介绍:
同样举个例子,让Cthree类储存三个成员变量,成员函数Min传回最小值,成员函数Max传回最大值。我们把他设计为template classes,以便这个类能适应于各个样式的数据类型:
template <class T>
class CThree
{
public:
CThree(T t1,T t2,T t3);
T Min();
T Max();
private:
T a,b,c;
};
下面是成员函数:
template <class T>
T CThree<T>::Min()
{
T minab=a<b?a:b;
return minab<c?minab:c;
}
template <class T>
T CThree<T>::Max()
{
T maxab=a<b?b:a;
return maxab<c?c:maxab;
}
template <class T>
CThree<T>::CThree(T t1,T t2,T t3):
a(t1),b(t2),c(t3)
{
return;
}
把T看成是int,long,double等类型就可以了,还要注意每个成员函数前都要加上template <class T>,而且类名称应该使用CThree<T>。
下面是template class的使用方式:
#include "iostream.h"
void main()
{
CThree<int>obj1(2,5,4);
cout<<obj1.Min()<<endl;
cout<<obj1.Max()<<endl;
CThree<float>obj2(8.52,-6.75,4.54);
cout<<obj2.Min()<<endl;
cout<<obj2.Max()<<endl;
}
结果为:
2
5
-6.75
8.52
- 模板函数template functions和模板类的基本区别template class
- Template Functions 模板函数
- Template functions模板函数
- C++ 模板中的template typename 和template class的区别
- template<class T>函数模板
- template<class T>函数模板
- Template<class T>函数模板
- template<class T>函数模板
- template模板类和模板函数
- C++,template,类模板和函数模板
- C++ 模板template<class T>和template<typename T>有区别吗?
- 模板声明中template <typename T>和template <class T>
- 函数模板template-重载的模板
- vue的模板 <template></template>
- 转@关于c++模板template中的typename 和class的区别
- template关键字typename和class的区别,以及模板默认参数
- (一)函数模板与类模板 Template
- template函数模板
- CountDownLatch 简介和例子
- Handler消息传递机制
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- C#读写app.config中的数据
- Java–排序算法-总结
- 模板函数template functions和模板类的基本区别template class
- SQLite数据库总结
- 两种HTTP连接方式POST&GET的比较
- C#读取对象实例的值和对对象的属性自动赋值方法
- java异常
- Android-签名类型
- JS判断是否为数字
- AVL树代码
- JavaScript如何控制Session