/* 模板函数 */
/* minmax.h */
//#pragma interface //新版gnu c++ 不需要此条语句
template
//T是类型占位符,class 可以指任何数据类型
//不一定是指c++ 类
T max(T a, T b)
{
if (a > b)
return a;
else
return b;
}
template
T min(T a, T b)
{
if (a < b)
return a;
else
return b;
}
/* tminmax.cpp */
#include
//#pragma implementation "minmax.h"
#include "minmax.h"
//using namespace std; //使用标准名空间会有重名错误
//instatiate template functions
template int min(int, int);
template double min(double, double);
template char min(char, char);
template int max(int, int);
template double max(double, double);
template char max(char, char);
int main()
{
int i1 = 100, i2 = 200;
double d1 = 3.14159, d2 = 9.87654;
char c1 = 'A', c2 = 'z';
cout << "max(i1, i2) == " << max(i1, i2) << endl;
cout << "max(d1, d2) == " << max(d1, d2) << endl;
cout << "max(c1, c2) == " << max(c1, c2) << endl;
cout << "min(i1, i2) == " << max(i1, i2) << endl;
cout << "min(d1, d2) == " << max(d1, d2) << endl;
cout << "min(c1, c2) == " << max(c1, c2) << endl;
return 0;
}
![](data:image/png;base64,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)
模板类的定义使用。。
/* db.h */
/*
* 模板类
*/
#include
using namespace std;
class DBError {
private:
string msg;
public:
DBError(const string &msg_arg):msg(msg_arg) { }
const string &what()const { return msg; }
};
template
class TDatabase {
private:
T *rp;
int num;
public:
TDatabase(int n):num(n)
{ rp = new T[num]; }
~TDatabase()
{ delete []rp; }
T &GetRecord(int recnum) throw (DBError);
};
template
T &TDatabase < T >::GetRecord(int recnum) throw (DBError)
{
if(0 <= recnum && recnum < num)
return rp[recnum];
else
throw DBError("Bad record number");
}
/* tdb.cpp */
#include
#include
#include "db.h"
using namespace std;
//Type of objects to store in database
class TRecord {
private:
string name;
public:
TRecord():name(){ }
TRecord(const string &s):name(s) { }
void Assign(const string &s) { name = s; }
const string & GetName()const { return name; }
};
int main()
{
int m; //Record number index
TDatabase *pdb; //Pointer to db of TRecords
pdb = new TDatabase(3); //create 3-record database
//Assign record data
pdb->GetRecord(0).Assign("George Washington");
pdb->GetRecord(1).Assign("John Adams");
pdb->GetRecord(2).Assign("Thomes JefferSon");
//Display database contents
for (m = 0; m <= 2; m++) {
cout << m << ": ";
cout << pdb->GetRecord(m).GetName() << endl;
}
//prompt user for record numbers
for (;;) {
cout << "Record number?(q to quit)";
cin >> m;
if ( !cin.good() ) break;
try {
TRecord &tr = pdb->GetRecord(m);
cout << m << ": " << tr.GetName() << endl;
}
catch (DBError error) {
cout << "* * * Error:" << error.what() << endl;
}
}
}
![](data:image/png;base64,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)
阅读(1221) | 评论(0) | 转发(2) |