Predecir la salida
#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) Error del compilador
(B)
10 20
(C)
20 20
(D)
10 10
Respuesta: (B)
Explicación: tenga en cuenta que la clase B tiene un operador de conversión sobrecargado, por lo que un objeto de B se puede convertir en el de A.
Además, la clase A tiene un constructor al que se puede llamar con un solo argumento entero, por lo que un int se puede convertir en A.
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA