结构体运算符重载

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值