结构体运算符重载


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM