1、定義結構體
struct Currency
{
int Dollar;
int Cents;
}
2、重載IO輸出操作,在結構體內部將輸入操作的重載定義為友元函數重載
friend ostream &operator<<(ostream &out,Currency value);
在結構體外部進行具體定義
ostream& operator<<(ostream &out,Currency value)
{
out<<"The dollar = "<<value.Dollar<<" and The Cents = "<<value.Cents<<endl;
return out;
}
3、重載結構體的“=”操作符(在結構體內部)
Currency& operator=(Currency& value)
{
Dollar = value.Dollar;
Cents = value.Cents;
return *this;
}
4、重載結構體的“+”操作符(在結構體內部)
Currency& operator+(Currency& value)
{
Dollar += value.Dollar;
Cents += value.Cents;
return *this;
}
5、重載結構體的"-"操作符(在結構體內部)
Currency &operator-(Currency& value)
{
Dollar = Dollar - value.Dollar;
Cents = Cents - value.Cents;
return *this;
}
6、重載結構體的“*”操作符(在結構體內部)
Currency& operator*(Currency& value)
{
Dollar *= value.Dollar;
Cents *= value.Cents;
return *this;
}
7、定義函數模板格式的輸出函數
template <typename T>
void DisplayValue(T value)
{
cout<<value<<endl;
}
8、進行運行測試。。。
Currency c1; c1.Dollar = 10; c1.Cents = 5; DisplayValue(c1); Currency c2,c3; c2 = c1; c3= c1+c2; DisplayValue(c3);

附上完整程序代碼。。。
#include "stdafx.h"
#include <iostream>
using namespace std;
template <typename T>
void DisplayValue(T value)
{
cout<<value<<endl;
}
struct Currency
{
int Dollar;
int Cents;
Currency& operator=(Currency& value)
{
Dollar = value.Dollar;
Cents = value.Cents;
return *this;
}
Currency& operator+(Currency& value)
{
Dollar += value.Dollar;
Cents += value.Cents;
return *this;
}
Currency &operator-(Currency& value)
{
Dollar = Dollar - value.Dollar;
Cents = Cents - value.Cents;
return *this;
}
Currency& operator*(Currency& value)
{
Dollar *= value.Dollar;
Cents *= value.Cents;
return *this;
}
friend ostream &operator<<(ostream &out,Currency value);
};
ostream& operator<<(ostream &out,Currency value)
{
out<<"The dollar = "<<value.Dollar<<" and The Cents = "<<value.Cents<<endl;
return out;
}
int _tmain(int argc, _TCHAR* argv[])
{
Currency c1;
c1.Dollar = 10;
c1.Cents = 5;
DisplayValue(c1);
Currency c2,c3;
c2 = c1;
c3= c1+c2;
DisplayValue(c3);
system("pause");
return 0;
}
The end...
