C++ | Sobrecarga del operador | Pregunta 6

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *