c++ klasen bitte hilfe



  • hi, ich bin auch totaler anfänger (komme von Basic)
    und nur deswegen probier ich den code mal ins "deutsche" zu übersetzen
    allerdings kann ich nicht auf richtigkeiten garantieren 🙄

    // Erzeugt eine Klasse "Base"
    class Base
    {
    };
    
    class Base
    {
    public: // <-- sagt das wir alles was unter public kommt, auch auserhalb der
            // klasse aufgerufen kann (öffentlich)
    virtual void f(); // <--- ist eine void f() funktion/methode die zur Base
                      // Klasse gehört, das virtual bedeutet soviel wie, das die
                      // funktion NUR zur Base Klasse gehört, also wird in keine
                      // abstracte(Erweiterte) klasse übernommen
    };
    
    class Base
    {
    public:
    virtual void f();
    };
    
    class Derived : public Base // Eine Klasse "Derived" als erweiterung von "Base"
                                // Erstellen
    {
    private:
    virtual void f();           // diese funktion unterscheidet sich von der Base
                                // funktion da diese virtual ist, das heist es wird
                                // nicht auf die void f() der base klasse
                                // zugegriffen
    };
    
    Base *b=new Derived; // Erstellt einen Pointer "b" der auf den typ/klasse Base
                         // zeigt, aber die erweiterung "Derived" erstellt
                         // jedes "Derived" ist ja auch ein "Base" aber nicht umgek.
    (*b).f();            // funktionsaufruf -> es müsste die void f() funktion von
                         // derived aufgerufen werden
    Derived *d=new Derived; // das gleiche wie bei base, nur das hier der typ als
                            // derived gegeben wurde
    (*d).f();               // es dürfte kein unterschied zur obigen funktion geben
    

    wobei wo ich mir das jetzt gerade genauer ansehe, ist das doch schon irgendwie
    blödsinn, man hätte ja auch einfach beim ersten auf Derived anstatt auf base
    pointen können. Denke da ist etwas nicht so ganz richtig, aber ich werds trotzdem einfach mal posten

    [Edit]
    Kann es sein das der code absichtlich falsch ist ?
    kommt mir langsam so vor das das eher eine übungsaufgabe ist.
    Denn "Class A : Class B" ist auf jeden fall falsch

    Gruss Tony



  • TonyM schrieb:

    das virtual bedeutet soviel wie, das die funktion NUR zur Base Klasse gehört, also wird in keine abstracte(Erweiterte) klasse übernommen
    };

    Genau andersherum - das "virtual" bedeutet, daß abgeleitete Klassen diese Methode neu definieren dürfen.

    wobei wo ich mir das jetzt gerade genauer ansehe, ist das doch schon irgendwie blödsinn, man hätte ja auch einfach beim ersten auf Derived anstatt auf base pointen können. Denke da ist etwas nicht so ganz richtig, aber ich werds trotzdem einfach mal posten

    Das ist schon richtig - der Vorteil dieser Konstruktion ist, daß du verschiedene Derived-Klassen definieren kannst und dann je nach Bedarf über Base-Zeiger weiterreichen kannst. Und dank der virtuellen Funktionen verhält sich jede dieser Klassen richtig.



  • CStoll schrieb:

    Genau andersherum - das "virtual" bedeutet, daß abgeleitete Klassen diese Methode neu definieren dürfen.

    ja damit wollte ich auch ausdrücken das abgeleitete klassen eine eigene version
    der methode haben müssen.

    CStoll schrieb:

    Das ist schon richtig - der Vorteil dieser Konstruktion ist, daß du verschiedene Derived-Klassen definieren kannst und dann je nach Bedarf über Base-Zeiger weiterreichen kannst. Und dank der virtuellen Funktionen verhält sich jede dieser Klassen richtig.

    macht sinn, wieder etwas gelernt 🙂

    Gruss Tony



  • TonyM schrieb:

    CStoll schrieb:

    Genau andersherum - das "virtual" bedeutet, daß abgeleitete Klassen diese Methode neu definieren dürfen.

    ja damit wollte ich auch ausdrücken das abgeleitete klassen eine eigene version
    der methode haben müssen.

    Können, nicht müssen.



  • Ich war einige zeit nicht da darum keine antwort von mir.

    Ich dancke dir TonyM und alle anderen die Helfen wollen. Dieser kod ist für mich zu schwerr weill ich nicht programmiere "professionel" aber brauche es für die schulle. Mit eure Hilfe würde ich es schafen, ich bitte euch noch einmal mir zu helfen 👍
    dancke nochmal

    PS: TonyM hast super erklärt nur kannst du auch die anderen cods so beschreiben??? DANCKE





  • das problem ist das ich nicht programmieren will ich habe andere interesen aber ich muss diese aufgabe machen weill ich sonst durchfalle!!!

    Bitte hilft mir diesen code zu beschreiben, es sind nur die notwendig damit ich weiter komme...

    Ich bitte alle nocheinmal um hilfe.

    Ich bedancke mich in voraus.



  • Dir wird nur geholfen wenn du noch ein bisschen mehr bettelst als wie du es sowieso schon machst.

    Also los, betteln.

    👍



  • LAsERdva schrieb:

    das problem ist ... muss diese aufgabe machen weill ich sonst durchfalle!!!...

    Tja, warum wohl...

    LAsERdva schrieb:

    das problem ist das ich nicht programmieren will ich habe andere interesen ...

    Gbt es einen besseren Grund, um durchzufallen ? 🙄

    Gruß,

    Simon2.



  • Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch
    Ich bitte euch... 😞



  • Hallo

    Die ganze Zeit und Enegrie die du hier zum Fragen verwendest hättest du besser nutzen sollen, mit Hilfe der inhaltlichen Antworten und frei zugänglichen Tutorial wie dem hier zu lernen.

    Wenn du dann noch immer direkte präzise Fragen hast, werden wir die gerne beantworten. Deine Schulaufgaben macht hier aber niemand.

    bis bald
    akari


Anmelden zum Antworten