您的位置:首页 > 其它

结构体运算符重载

2012-05-25 17:11 295 查看
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...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: