Here I'm listing some problems related to Operator Overloading to spice up the discussion a bit. This is a TWO part series so read the next article after solving each of the problems listed here.
Problem #1: Point out the error(s) if any in the following code:
1 // Problem #1:
2 // Problem related to
3 // Operators Overloading
4 #include <iostream.h>
5
6 class myclass
7 {
8 int a;
9 int b;
10
11 public:
12 myclass(){}
13 myclass(int x,int y){a=x;b=y;}
14 void show()
15 {
16 cout<<a<<endl<<b<<endl;
17 }
18
19 myclass operator+(int);
20 };
21
22 myclass myclass::operator+(int x)
23 {
24 myclass temp;
25
26 temp.a=a + x;
27 temp.b=b + x;
28
29 return temp;
30 }
31
32 void main()
33 {
34 myclass a(10,20);
35
36 a=a+10;
37 a.show();
38 }
Problem #2: Point out the error(s) if any in the following code:
1 // Problem #2:
2 // Problem related to
3 // Operators Overloading
4 #include <iostream.h>
5
6 class myclass
7 {
8 int a;
9 int b;
10
11 public:
12 myclass(){}
13 myclass(int x,int y){a=x;b=y;}
14 void show()
15 {
16 cout<<a<<endl<<b<<endl;
17 }
18
19 int operator=(int);
20 };
21
22 int myclass::operator=(int x)
23 {
24 a=x;
25 b=x;
26
27 return x;
28 }
29
30 void main()
31 {
32 myclass a(10,20);
33 myclass b,c;
34
35 c=b=a;
36
37 c.show();
38 }
Problem #3: Point out the error(s) if any in the following code:
1 // Problem #6:
2 // Problem related to
3 // Operators Overloading
4 #include <iostream.h>
5
6 class myclass
7 {
8 int a;
9 int b;
10
11 public:
12 myclass(){}
13 myclass(int x,int y){a=x;b=y;}
14 void show()
15 {
16 cout<<a<<endl<<b<<endl;
17 }
18
19 myclass operator++();
20 };
21
22 myclass myclass::operator++()
23 {
24 a++;
25 b++;
26
27 return this;
28 }
29
30 void main()
31 {
32 myclass a(10,20);
33
34 ++a;
35
36 a.show();
37 }
ANSWERS:
-
No Errors
-
No Errors
- We need to return the object and not the pointer (this). The statement should have been, return *this;
Related Articles: