⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4_5.cpp

📁 清华大学出版社出版的c++程序设计课本
💻 CPP
字号:
#include <iostream.h>
#include <stdlib.h>

// 结构体Student
struct Student
{
    int     id;  //学号
    float   gpa;   //平均分
};  

template <class T>  //类模板:实现对任意类型数据进行存取
class Store
{
    private:
        T item;         // item用于存放任意类型的数据
        int haveValue;  // haveValue标记item是否已被存入内容
		
    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>::GetElem(void)    
{
    // 如果试图提取未初始化的数据,则终止程序
    if (haveValue == 0)
    {
        cout << "No item present!" << endl;
        exit(1);
    }
    return item;    // 返回item中存放的数据 
}

// 存入数据函数的实现 
template <class T>                              
void Store<T>::PutElem(T x)
{
    haveValue++;      // 将haveValue 置为 TRUE,表示item中已存入数值
    item = x;         // 将x值存入item
}

void main(void)
{
    Student g= {1000, 23};  
	//定义Student类型结构体变量的同时赋以初值
    Store<int> S1, S2; 
	//定义两个Store类对象,其中数据成员item为int类型
    Store<Student> S3;
	//定义Store类对象S3,其中数据成员item为Student类型
    Store<double> D; 
	//定义Store类对象D,其中数据成员item为double类型
	
    S1.PutElem(3); //向对象S1中存入数据(初始化对象S1)
    S2.PutElem(-7); //向对象S2中存入数据(初始化对象S2)
    cout << S1.GetElem() << "  " << S2.GetElem() << endl; 
	//输出对象S1和S2的数据成员
	
    S3.PutElem(g); //向对象D中存入数据(初始化对象D)
    cout << "The student id is " << S3.GetElem().id << endl;
	//输出对象S3的数据成员
    
    cout << "Retrieving object D  " ;
	cout << D.GetElem() << endl;  //输出对象D的数据成员
	// 由于D未经初始化,在执行函数D.GetElement()过程中导致程序终止
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -