C++语言程序设计 例9-2类模板应用举例 类 模 #include <iostream> 板 #include <cstdlib> using namespace std; /结构体Student struct Student int id;/学号 float gpa; //平均分 }
C++语言程序设计 11 例9-2 类模板应用举例 #include <iostream> #include <cstdlib> using namespace std; // 结构体Student struct Student { int id; //学号 float gpa; //平均分 }; 类 模 板
template <class T> class Store{//类模板:实现对任意类型数据进行存取 private: T item;/item用于存放任意类型的数据 bool haveValue;/haveValue标记item是否已被 存入内容 public: Store();//缺省形式(无形参)的构造函数 T&getE1em0;/提取数据函数 void putElem(const T&x);/存入数据函数 }; //以下实现各成员函数。 template <class T> /缺省构造函数的实现 Store<T>:Store():haveValue(false){}
template <class T> class Store {//类模板:实现对任意类型数据进行存取 private: T item; // item用于存放任意类型的数据 bool haveValue; // haveValue标记item是否已被 存入内容 public: Store(); // 缺省形式(无形参)的构造函数 T &getElem(); //提取数据函数 void putElem(const T &x); //存入数据函数 }; //以下实现各成员函数。 template <class T> //缺省构造函数的实现 Store<T>::Store(): haveValue(false) { } 12
template <class T> //提取数据函数的实现 T &Store<T>:getElem() //如试图提取未初始化的数据,则终止程序 if (!haveValue){ cout <"No item present!"<endl; exit(I);//使程序完全退出,返回到操作系统。 return item; /返回item中存放的数据 template <class T> //存入数据函数的实现 void Store<T>:putElem(const T &x){ //将haveValue置为true,表示item中已存入数值 haveValue true; item x; //将x值存入item
template <class T> //提取数据函数的实现 T &Store<T>::getElem() { //如试图提取未初始化的数据,则终止程序 if (!haveValue) { cout << "No item present!" << endl; exit(1); //使程序完全退出,返回到操作系统。 } return item; // 返回item中存放的数据 } template <class T> //存入数据函数的实现 void Store<T>::putElem(const T &x) { // 将haveValue 置为true,表示item中已存入数值 haveValue = true; item = x; // 将x值存入item } 13
int main(){ Store<int>s1,s2; s1.putElem(3); s2.putElem(-7); cout<sl.getElem0<””<s2.getElem0<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..." cout <d.getElem()<<endl 由于d未经初始化,在执行函数D.getElement0过程中导致程序终 止 return 0; 0 14
int main() { Store<int> s1, s2; 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... "; cout << d.getElem() << endl //由于d未经初始化,在执行函数D.getElement()过程中导致程序终 止 return 0; } 14
C++语言程序设计 第二部分:群体数据 。线性群体 一线性群体的概念 一直接访问群体-数组类 顺序访问群体-链表类 栈类 一队列类
C++语言程序设计 15 第二部分:群体数据 线性群体 – 线性群体的概念 – 直接访问群体--数组类 – 顺序访问群体--链表类 – 栈类 – 队列类