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...