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(); }