`
testcs_dn
  • 浏览: 113891 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

结构体运算符重载

 
阅读更多

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

分享到:
评论

相关推荐

    cpp代码-结构体运算符重载

    在这个“cpp代码-结构体运算符重载”的主题中,我们将深入探讨如何在C++中对结构体进行运算符重载。 首先,我们需要了解运算符重载的基本语法。在C++中,我们可以使用函数成员或者友元函数来重载运算符。例如,如果...

    Struct和运算符重载---详细

    然而,本文的重点是探讨`struct`中的运算符重载,这是一个强大的特性,允许我们自定义运算符的行为以适应特定的数据类型。 运算符重载并不创建新的运算符,而是为已存在的运算符赋予新的意义或功能,使得我们可以...

    C++运算符重载课件PPT及实例

    在C++编程语言中,运算符重载是一个关键特性,它允许我们为已存在的运算符赋予新的含义,以便在自定义类型上使用。这使得我们可以按照与内置类型类似的方式操作自定义类对象,提高代码的可读性和简洁性。本课件主要...

    c++运算符重载,重载运算符

    ### C++运算符重载详解 #### 一、前言 C++允许用户自定义类或结构体,并为这些类型重载内置运算符,从而使得这些类型能够像内置类型一样使用标准运算符进行操作。本篇文章将通过三个具体的示例来深入探讨C++中的...

    c++ demo,运算符重载,成员函数的实现

    在C++编程语言中,运算符重载是其特性之一,允许我们为现有的运算符赋予新的含义,以便在自定义类型上使用。本教程通过一个DEMO深入探讨如何在C++中实现运算符重载以及如何利用成员函数来完成这一过程。 首先,理解...

    c++——运算符重载(四) 源码

    首先,运算符重载并不意味着创建新的运算符,而是为已有的运算符定义在特定类或结构体上的行为。例如,我们可以让"+"运算符用于两个自定义对象的相加,而不是仅仅限于基本数据类型的加法。这极大地提高了代码的...

    运算符重载实验报告共10页.pdf.zip

    运算符重载并不创建新的运算符,而是让现有的运算符能够作用于类对象或者结构体,使得代码更加简洁易读。 在C++中,我们可以重载的运算符包括但不限于:+、-、*、/、%、、&gt;&gt;、=、==、!=、&lt;、、&gt;、&gt;=、++、--、-&gt;、...

    ***C++运算符重载***

    运算符重载使得用户自定义类型(如类或结构体)能够像内置类型一样支持各种运算符。例如,你可以让你创建的类能够支持加法、减法、乘法、除法等运算。这对于提高代码的可读性和效率非常有帮助,因为你可以用更接近于...

    运算符重载

    在C++编程语言中,运算符重载是一项非常重要的特性,它允许我们对自定义类型(如类或结构体)中的数据进行数学运算、逻辑运算等操作时,使用类似于内置类型的运算符。通过运算符重载,我们可以使代码更直观、更易于...

    C++中的运算符的重载

    在C++编程语言中,运算符重载是一种强大的特性,允许程序员为自定义数据类型赋予特定的运算行为,使得操作自定义类型就像操作内置类型一样自然。运算符重载是C++面向对象特性的一部分,它使得代码更加清晰,易于理解...

    运算符重载和自定义类型变换PPT学习教案.pptx

    运算符重载是C#(以及其他面向对象语言)中的一项特性,它允许程序员为自定义类型赋予特定的运算符含义,使得使用这些类型的代码更加直观和简洁。在讲解运算符重载之前,我们先理解一下自定义类型的概念。自定义类型...

    C++自定义结构体排序实现

    在C++中,我们可以通过重载运算符来实现结构体的排序。例如,我们可以重载小于号(&lt;)和大于号(&gt;)运算符,以便实现升序和降序排序。 在代码中,我们首先定义了一个名为AssessTypeInfo的结构体,该结构体包含三个...

    C++课件 类和对象 数入输出 运算符重载 继承派生 指针数组等等课件

    这个课件主要涵盖了C++的几个核心概念和技术,包括类和对象、数值输入输出、运算符重载、继承与派生以及指针和数组。下面将详细阐述这些知识点。 1. **类和对象**:在C++中,类是数据和操作数据的方法的集合,是...

    运算符重载 <>流插入符 流提取符

    在C++中,运算符重载是一种特殊形式的函数重载,允许我们为用户定义的类型(例如类或结构体)提供已有的运算符行为。通过这种方式,我们可以使自己的类型支持如`+`、`-`、`*`等标准运算符,甚至是一些特殊的运算符如...

    在C++中如何重载运算符

    运算符重载允许开发者为自定义类型(如类或结构体)定义特定的运算符行为,这不仅增强了代码的可读性,还提升了开发效率。然而,为了正确有效地使用运算符重载,理解其工作原理及限制条件至关重要。 #### 正文 ###...

    C语言 重载运算符和重载函数.pdf

    尽管C语言不允许直接重载运算符,但我们可以通过定义结构体或联合体(union),然后为其编写成员函数的方式来间接实现运算符重载的效果。例如,对于一个简单的复数类,我们可以这样实现加法运算: ```c typedef ...

    C++中不能重载的运算符

    在C++编程语言中,为了提高代码的灵活性和可读性,提供了运算符重载这一特性。然而,并非所有的运算符都可以被重载。本文将详细介绍那些不可重载的运算符以及自增(`++`)和自减(`--`)运算符的重载规则。 #### 不可...

Global site tag (gtag.js) - Google Analytics