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