C++ | Operator Overloading | Question 6

Predict the output

#include<iostream>
using namespace std;
class A
{
    int i;
public:
    A(int ii = 0) : i(ii) {}
    void show() {  cout << i << endl;  }
};
  
class B
{
    int x;
public:
    B(int xx) : x(xx) {}
    operator A() const return A(x); }
};
  
void g(A a)
{
    a.show();
}
  
int main()
{
    B b(10);
    g(b);
    g(20);
    return 0;
}

(A) Compiler Error
(B)

10
20

(C)

20
20

(D)

10
10


Answer: (B)

Explanation: Note that the class B has as conversion operator overloaded, so an object of B can be converted to that of A.

Also, class A has a constructor which can be called with single integer argument, so an int can be converted to A.

Quiz of this Question



My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :



Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.