c++ 函数模板 类模板
来源:互联网 发布:城市智能交通大数据 编辑:程序博客网 时间:2024/03/28 22:13
一、函数模板
两个参数
void outputArray(const T*array,int count)
{
for(int i=0;i<count;i++)
{
cout<<array[i]<<" ";
}
}
int main()
{
const int A_COUNT=8,B_COUNT=20;
double a[A_COUNT]={1.1,2.2,3.3,4.4,5.5,6.6};
char b[B_COUNT]="welcome!";
outputArray(b,B_COUNT);
cout<<endl;
outputArray(a,A_COUNT);
}
一个参数
template <typename T>
T abs(T x)
{
return x<0?-x:x;
}
int main()
{
int a=-3;
cout<<abs(a)<<endl;
double b=-4.9;
cout<<abs(b)<<endl;
}
函数模板的实例化:函数参数类型确定后,编译器以函数模板为样板生成一次函数。
如:
int abs(int x)
{
return x<0?-x:x;
}
函数模板与函数区别:
1、函数模板编译时不产生目标代码,实例化才产生
2、函数指针指向模板实例,而不指向模板本身。
3、多个源文件引用函数模板时,应当连同函数体一起放在头文件,而不像普通函数那样只把头文件的声明放在头文件。
二、类模板
struct Student{int id;float gpa;};template <class T>//类模板:实现对任意类型的数据进行存取class Store{private:T item;//存放任意类型数据bool haveValue;//标记是否已存入public:Store();//默认构造T &getElem();//提取数据函数void putElem(const T &x);//存入数据函数};//成员函数实现template<class T>Store<T>::Store():haveValue(false){}//构造函数template<class T>T &Store<T>::getElem(){if(!haveValue){cout<<"No item present"<<endl;exit(1);}return item;}//存入数据函数实现template<class T>void Store<T>::putElem(const T&x){haveValue=true;item=x;}int main(){Store<int>s1,s2;//定义两个Store<int>对象,数据成员item为int类型s1.putElem(3);s2.putElem(-7);cout<<s1.getElem()<<" "<<s2.getElem()<<endl;Student g={1000,23};Store<Student>s3;s3.putElem(g);cout<<"the student id is"<<s3.getElem().id<<endl;Store<double>d;cout<<"Retrieving object d..."<<endl;cout<<d.getElem()<<endl;}
0 0
- C/C++:函数模板与类模板
- [C/C++]模板函数与模板类
- C++,template,类模板和函数模板
- C++:函数模板、类模板及其特化
- C++---函数模板与类模板
- c++---函数和类模板
- 函数模板、类模板
- 模板函数,模板类
- 类模板(函数模板)
- 函数模板 类模板
- 函数模板、类模板
- 【c/c++】函数模板和模板函数
- C/C++_log2000_函数模板与类模板笔记1
- C/C++_log2000_函数模板与类模板笔记2
- C/C++ 函数模板
- c++:函数模板
- 【C++】函数模板
- 【c++】函数模板
- 通过socket登陆MySQL
- 【Python】|JSON序列化与反序列化
- jquery change()时间
- 数据结构与算法题目集(中文)4-10 二分查找 (20分)
- android中的mvp模式(二)
- c++ 函数模板 类模板
- (*(volatile unsigned long *) 地址)
- Canvas裁剪和Region、RegionIterator
- Quartz+Spring 分布式定时任务调度(一)- 环境搭建
- 图形视图框架(The QGraphics View Framework)
- scws自定义分词库
- python generator yield 协程 coroutine
- 微信分享功能JS-SDK说明文档
- 文章标题 HDU 1176:免费馅饼 (DP)