结构体运算符重载
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...
作者:imFolish
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。