www.gusucode.com > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序 > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序/code/C++例题程序/第5章/s5_5/smain5_5.cpp

    //Download by http://www.NewXing.com
//主文件
//文件名:ch5_5\smain5_5.cpp
//类定义及实现文件,对类模板有一个小小的限制,类的定义和实现需要在同一个文件中

//编译预处理语句:如果未定义__SCLASS5_5_T_H__则定义它,
//直到遇到#endif结束
#ifndef __SCLASS5_5_T_H__ 
#define __SCLASS5_5_T_H__ 

#include <iostream>  //包含头文件。使用iostream库

using namespace std; //使用std名字空间

//定义CInteger类和CReal类的抽象类
//TNumber是CInteger类和CReal类的抽象描述,它是一个类模板,
//它除了可以生成以上两个具体的类以外,还可以生成其他代码相似的类
template <class Type> 
class TNumber           
{
public:
	TNumber(Type);
	~TNumber(){ };
	void SetItem(Type);
	Type GetItem( );
	//…
private:
	Type m_item;
};

#endif   //结束编译预处理
 
template <class Type>
TNumber<Type>::TNumber(Type item)		//CInteger的构造函数的实现
{
	m_item = item;
}

template <class Type>
void TNumber<Type>::SetItem(Type item)	//设置CInteger的数据成员
{
	m_item = item;
}

template <class Type>
Type TNumber<Type>::GetItem()			//返回CInteger的数据成员
{
	return m_item;
}

//主测试程序
void main( )  
{
	TNumber<int> Obj1(12);				//声明一个TNumber<int>模板类对象
	cout << Obj1.GetItem( ) << endl;
	Obj1.SetItem(120);
	cout << Obj1.GetItem( ) << endl;
	//…
	TNumber<double> Obj2(20.01);		//声明一个TNumber<double>模板类对象
	cout << Obj2.GetItem( ) << endl;
	Obj2.SetItem(200.01);
	cout << Obj2.GetItem( ) << endl;
	//…
	cin.get();  
}