-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdemo16.cpp
76 lines (66 loc) · 1.64 KB
/
demo16.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <string>
using namespace std;
class Sales_item
{
friend bool operator == (const Sales_item&, const Sales_item&);
friend ostream& operator << (ostream& out, const Sales_item& s);
public:
Sales_item(const string& book, const unsigned units, const double amount)
:isbn(book),units_sold(units),revenue(amount) {}
Sales_item& operator += (const Sales_item&);
Sales_item& operator -= (const Sales_item&);
private:
string isbn;
unsigned units_sold;
double revenue;
};
inline bool operator == (const Sales_item& lhs, const Sales_item& rhs)
{
return lhs.isbn==rhs.isbn && lhs.units_sold==rhs.units_sold && lhs.revenue==rhs.revenue;
}
bool operator != (const Sales_item& lhs, const Sales_item& rhs)
{
return !(lhs == rhs);
}
ostream& operator << (ostream& out, const Sales_item& s)
{
out << s.isbn << "\t" << s.units_sold << "\t" << s.revenue;
return out;
}
Sales_item& Sales_item::operator -= (const Sales_item& rhs)
{
this->units_sold -= rhs.units_sold;
this->revenue -= rhs.revenue;
return *this;
}
Sales_item& Sales_item::operator += (const Sales_item& rhs)
{
this->units_sold += rhs.units_sold;
this->revenue += rhs.revenue;
return *this;
}
Sales_item operator + (const Sales_item& lhs, const Sales_item& rhs)
{
Sales_item ret(lhs);
ret += rhs;
return ret;
}
Sales_item operator - (const Sales_item& lhs, const Sales_item& rhs)
{
Sales_item ret(lhs);
ret -= rhs;
return ret;
}
int main()
{
Sales_item s1("0-1234-5678-X", 2, 40);
Sales_item s2("0-1234-5678-X", 2, 40);
cout << (s1 == s2) << endl;
cout << (s1!=s2) << endl;
// Sales_item s = s1 + s2;
// cout << s << endl;
// s -= s1;
// cout << s << endl;
return 0;
}