87.重载流式运算符以及外部函数重载运算符

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <iostream>
 3 using namespace std;
 4 
 5 class box
 6 {
 7 private:
 8     int x;
 9     int y;
10     int z;
11     
12 
13 public:
14     box() :x(10), y(20), z(30)
15     {
16 
17     }
18 
19     friend box operator +(const box &box1, const box &box2);
20     friend box operator +(const box &box1, int num);
21     friend ostream & operator << (ostream &, const box &box1);
22     friend istream &operator >> (istream &, box &box1);
23 
24     void show()
25     {
26         cout << x << y << z << endl;
27     }
28 
29 };
30 
31 //外部重载,没有this指针隐含对象
32 box operator +(const box &box1, const box &box2)
33 {
34     box tmp;
35     tmp.x = box1.x + box2.x;
36     tmp.y = box1.y + box2.y;
37     tmp.z = box1.z + box2.z;
38     return tmp;
39 }
40 
41 
42 box operator +(const box &box1, int num)
43 {
44     box tmp;
45     tmp.x = box1.x + num;
46     return tmp;
47 }
48 
49 
50 //重载流运算符,输入一个引用,返回一个引用
51 ostream & operator << (ostream &,const box &box1)
52 {
53     return cout << box1.x << box1.y << box1.z << endl;
54 }
55 
56 istream &operator >> (istream &, box &box1)
57 {
58     return cin >> box1.x >> box1.y >> box1.z ;
59 }
60 
61 void main()
62 {
63     box box1;
64     box box2;
65     box box3 = box1 + box2;
66     box box4 = box1 + 20;
67     /*box4.show();*/
68     cin >> box1;
69     cout << box1;
70     cin.get();
71 }
原文地址:https://www.cnblogs.com/xiaochi/p/8596369.html