类模板
来源:互联网 发布:淘宝电脑可靠么 编辑:程序博客网 时间:2024/04/27 21:37
模板是C++支持参数化的工具。
使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员,某些成员函数的参数、返回值能取
任意类型。
1、类模板的声明形式
=====================
template <模板参数表>
类声明
=====================
注意:模板类的成员函数必须是函数模板
模板参数表包含下列内容:
a. class 标识符 //接受任意类型参数
b. 类型说明符 标识符 //接受常量参数
2、使用一个模板类来建立对象
=====================
模板<模板参数表> 对象名1,...,对象名n;
=====================
3、成员函数的的声明
=====================
template <模板参数表>
返回值类型 类名<标识符1,...,标识符n>::函数成员名(参数表)
{
函数体
}
=====================
其中“标识符”是指模板参数表中的标识符
#include <iostream.h>
#include <stdlib.h>
struct Student
{
int id;
float gpa;
};
template <class T> //类模板,实现对任意数据类型进行存取
class Store
{
private:
T item;
int haveValue;
public:
Store(void); //默认形式(无型参)的构造函数
T GetElem(void);//提取数据函数,返回值和型参都是任意类型数据;
void PutElem(T x);
};
//以下实现各成员函数
//注意:类模板成员函数,若在类外实现,则必须是模板函数
//默认形式的构造函数的实现,无返回值。
template <class T>
Store<T>::Store(void):haveValue(0)
{}
//提取数据函数的实现
//在类外定义必须由作用域运算符"::"来通知编译系统该函数所属的类
//且必须指明类的函数模板,下文中“template <class T> T Store<T>”
//template <class T>是模板定义的类型,T是成员函数GetElem(void)的返回值
//类Store<T>所指明的参数类型名称T必须是在类模板中定义的
template <class T>
T Store<T>::GetElem(void)
{
if(haveValue==0)
{
cout<<"No item present!"<<endl;
exit(1);
}
return item;
}
//存入数据函数实现
template <class T>
void Store<T>::PutElem(T x)
{
haveValue++;
item=x;
}
void main(void)
{
Student g={1000,23};
Store<int>S1,S2;
Store<Student>S3;
Store<double>D;
S1.PutElem(3);
S2.PutElem(-7);
cout<<S1.GetElem()<<" "<<S2.GetElem()<<endl;
S3.PutElem(g);
cout<<"The student ID is "<<S3.GetElem().id<<endl;
cout<<"Retrieving object D "<<endl;
cout<<D.GetElem()<<endl;
}
- 函数模板、类模板
- 模板 - 类模板
- 模板函数,模板类
- 模板的模板类
- 类模板(函数模板)
- 模板之---类模板
- C++模板:模板类
- 函数模板 类模板
- 函数模板、类模板
- C++模板学习(函数模板+类模板)
- 模板——函数模板、类模板
- 模板 Templates 模板函数 模板类
- C++模板(类模板、函数模板)
- 模板之类模板(数组类模板)
- 类模板
- 类模板
- 类模板
- 类模板
- 文件合并器(七夕特别版)
- 禁止自动排序的补充
- 判断是否有英文
- Adding Windows To Your Console Application
- java.lang.ThreadLocal类的实现,用法
- 类模板
- linux多线程socket服务器
- Hibernate学习(六):session.delete以及对象状态转换图
- RS485半双工软件编程实现
- BB入学之黑莓的一般设置
- Fundamentals of Sound: How to Make Music out of Nothing at All
- 深入浅出SQL之左连接、右连接和全连接
- HelloWorld系列-在Java中Send Email
- 我的大学十年