结构体重载运算符

#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;
}

原文地址:https://www.cnblogs.com/lovebay/p/12380974.html

时间: 2024-10-20 06:58:59

结构体重载运算符的相关文章

结构体重载运算符&amp;srand&amp;rand

先上代码,再按代码讲解 #include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<algorithm>using namespace std;struct shudui{    int w,e;    bool operator > (const shudui q)const    {        return w>q.w;    }}

C++ 结构体重载运算符

听说这个东西有很多种写法什么的,来不及了(要退役了),先整一个之前用到的,可能用到的频率比较高的东西上来. struct node{ ll x,y; }; bool operator < (const node& a,const node& b) { if(a.x<b.x) return true; else if(a.x==b.x&&a.y<b.y) return true; else return false; } 这种写法是当时要定义一个什么 map

C++加载运算符代码学习

4.5 运算符重载 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 4.5.1 加号运算符重载 作用:实现两个自定义数据类型相加的运算 class Person { public: Person() {}; Person(int a, int b) { this->m_A = a; this->m_B = b; } //成员函数实现 + 号运算符重载 Person operator+(const Person& p) { Person temp; t

六、结构体

6.1 结构体概念 结构体(struct):是由一系列具有相同类型或不同类型的数据构成的数据集合. "结构"是一种构造类型,它是由若干"成员"组成的. 每一个成员可以是一个基本数据类型或者又是一个构造类型. 结构即是一种"构造"而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它. 6.2 C++语言中的结构体 6.2.1 结构体的声明和定义 声明一个结构体类型的一般形式为: struct 结构体名{ 成员列表; }: eg: str

同花顺

洛谷P2652 同花顺 这是在2017日照夏令营的D1T2,我认为质量相当高的一道题,第一次在赛场上做的时候爆零了,当时态度不很端正,暴力不想打,想投机取巧骗分,还是不要把希望压在不确定的事情上,有多少分实实在在拿着就拿着,然后能力之外的再尽可能获得更多.言归正传,这个用类似枚举的思路来做,枚举一个同花顺的左右端点,具体是外循环先确定j,然后枚举可能的第一个左端点,然后用n-max(ans):这个的证明是向李子晗学习的,回来后我又在洛谷上做了一遍,50分.接下来是核心部分:先说我为什么是错的,我

【bzoj3638】Cf172 k-Maximum Subsequence Sum 模拟费用流+线段树区间合并

题目描述 给一列数,要求支持操作: 1.修改某个数的值 2.读入l,r,k,询问在[l,r]内选不相交的不超过k个子段,最大的和是多少. 输入 The first line contains integer n (1 ≤ n ≤ 105), showing how many numbers the sequence has. The next line contains n integers a1, a2, ..., an (|ai| ≤ 500). The third line contain

[bzoj1875][SDOI2009] HH去散步 [dp+矩阵快速幂]

题面 传送门 正文 其实就是让你求有多少条长度为t的路径,但是有一个特殊条件:不能走过一条边以后又立刻反着走一次(如果两次经过同意条边中间隔了别的边是可以的) 如果没有这个特殊条件,我们很容易想到dp做法:设$dp\left[i\right]\left[j\right]$表示第i个时刻(初始算0),走到第j个点的答案总数 但是这里要限制不能反复走,那么直接设点会导致信息丢失 那我们怎么样才能让保存当前所在点的情况下,不丢失最后一条边的信息呢? 答案非常显然,我们只要设$dp\left[i\rig

一些好东西(

一键驱逐int ( 相关传送门 #define int ll typedef long long ll; int x,y,z; signed main(){...}//然后就跟mian无关了( //但是空格不敢乱用所以不敢直接写#define int long long而是换成两行 结构体初始化(不打游戏真不知道 ( 参考资料 就是例如 struct Enemy //怪的结构体,并初始化各种怪 { char name[20]; char wupin[12]; int attack; int de

CSPS模拟86-87

模拟86 T1,烧水,按位统计贡献,利用某种sao操作避免数位dp 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 const int mod=1000000007; 6 using namespace std; 7 int n,m; 8 int dp1[40],sum[40]; 9 int bin[40]; 10 inline void