#include <iostream>
#include <string>
using namespace std;

class Pastel {
public:
    Pastel(string s) : sabor(s) {}
    string hornear() { 
        return "El pastel sera horneado y de sabor " + sabor + "\n";
    }
protected:
    string sabor;
};

class PastelBoda : public Pastel {
public:
    PastelBoda(string s, int nivel) : Pastel(s), nivelDecoracion(nivel) {}
    string decorar() { 
        return "Decorando el pastel de boda con nivel de decoracion " + to_string(nivelDecoracion) + 
        "\n";
    }
private:
    int nivelDecoracion;
};

int main() {
    Pastel obj("chocolate");
    cout << obj.hornear();

    PastelBoda obj2("fresa", 5);
    cout << obj2.hornear();
    cout << obj2.decorar();

    return 0;
}

/*
Tenemos dos clases, Pastel` como clase padre y PastelBoda como clase hija.

La clase Pastel tiene:
- Un atributo protegido sabor, inicializado en el constructor.
- Un método público hornear(), que retorna un mensaje indicando que el pastel será horneado con su sabor.

La clase `PastelBoda` hereda de Pastel utilizando la sintaxis de herencia pública. Esto significa que todos los miembros públicos de la clase padre permanecen públicos en la clase hija, y los miembros protegidos permanecen protegidos. La clase PastelBoda añade:
- Un atributo privado nivelDecoracion, inicializado en el constructor.
- Un método público decorar(), que retorna un mensaje indicando el nivel de decoración del pastel de boda.

La herencia en C++ se especifica usando el operador ":" seguido por el tipo de herencia (`public`, `protected`, o `private`) y el nombre de la clase padre. En este caso, `PastelBoda` hereda de `Pastel` de manera pública:

 */                                            

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: