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

📄 demo_class_template_b.cpp

📁 对于一个初涉VC++的人来书
💻 CPP
字号:

//***************************************************

#include <iostream.h>
#include <stdlib.h>

struct Student  //结构体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 + -