//Constructores sobrecargados #include using namespace std; class MC { float m, n, o, p; public: MC () { m=n=o=p=0.0;} // Constructor 1 MC (float i) {m=n=o=p=i;} // Constructor 2 MC (const MC &fuente) { // Constructor copia m=fuente.m; n=fuente.n; o=fuente.o; p=fuente.p; } void Cambiar(float a=0.0, float b=0.0, float c=0.0,float d=0.0); void Escribir(void); }; // Funciones miembro (métodos de la clase) void MC::Cambiar(float a, float b, float c, float d) { m=a; n=b; o=c; p=d; } void MC::Escribir(void) { cout << "\nValor de m: " << m; cout << "\nValor de n: " << n; cout << "\nValor de o: " << o; cout << "\nValor de p: " << p << "\n"; } // Programa Principal int main () { MC o1(3), // La primera instancia utiliza el constructor 2 o2, // La segunda instancia utiliza el constructor 1 o3(o1); // La tercera utilizará el constructor copia o1.Escribir(); // Saca m=n=o=p=3 o2.Escribir(); // Saca m=n=o=p=0 o3.Escribir(); // Saca m=n=o=p=3 o3.Cambiar(5,6,7,8); // Cambiamos los valores del objeto 3 MC o4(o3); // Nueva instancia de MC // utiliza el constructor copia o4.Escribir(); // Saca por pantalla m=5, n=6, o=7, p=8 MC o5 = o4; // Nueva instancia de MC // utiliza también el constructor copia o5.Escribir(); // Saca por pantalla m=5, n=6, o=7, p=8 return (0); }