Ejemplo
Se muestra la utilización de los constructores de conversión, y como el compilador selecciona automáticamente el constructor adecuado para realizar el modelado de tipo asociado con determinadas operaciones de asignación.
#include <iostream>
using namespace std;
class C {
public:
int x;
C() { // C-1
cout << "Invocado Constructor C-1\n"; x = 0;
}
C(int i) { // C-2
cout << "Invocado Constructor C-2\n"; x = i;
}
C(char* pc) { // C-3
cout << "Invocado Constructor C-3\n"; x = -1;
}
C& operator=(const C& cr) {
cout << "Invocado operador de asignacion X= " << x << endl;
x = cr.x;
return *this;
}
~C() { // Destructor
cout << "Invocado destructor\n";
}
};
int main() { // ===========
{
C a; // S1
C b = 2; // S2
C c = "Mexico"; // S3
a = c; // S4
b = 3; // S5, S6
}
// S7, S8, S9, S10
return 0;
}
Salida:
Invocado Constructor C-1
Invocado Constructor C-2
Invocado Constructor C-3
Invocado operador de asignacion X= 0
Invocado Constructor C-2
Invocado operador de asignacion X= 2
Invocado destructor
Invocado destructor
Invocado destructor
Invocado destructor
Comentario
En las sentencias de la función main se han indicado las líneas de salida que les corresponden.