Ad

Friday, August 24, 2007

Problems on Operator Overloading I

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.

Problems on Operator Overloading I

Problems on Operator Overloading II

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:

  1. No Errors

  2. No Errors

  3. We need to return the object and not the pointer (this). The statement should have been, return *this;

Related Articles:

No comments:

Post a Comment

You are free to comment anything, although you can comment as 'Anonymous' it is strongly recommended that you supply your name. Thank You.

Please don't use abusive language.