Verschiedene Möglichkeiten ein Objekt mit virtuellen Methoden zu erstellen?



  • So hallo, bin auch ma wieder da. Also wenn ich das richtig verstanden habe, dann gibt es doch 3 Möglichkeiten ein Objekt mit virtuellen Methoden zu erstellen, und zwar:
    **-**entweder mit einer Referenz
    **-**mit einem Zeiger und auf diesen dann die Adress eines abgeleiteten Objekt zeigen lassen.
    **-**mit einem Zeiger und auf diesen dann einen mit "new" reservierten Speicherbereich, mit dem Typ einer abgeleiteten Klasse, zeigen lassen.

    Is das so ungefähr richtig? Oder hab ich da n bisschen was verpeilt? Wie erstellt ihr eure Objekte die virtuelle Methoden beinhalten?
    Hier mal n Beispiel zu dme was ich gesagt habe:

    #include <iostream>
    using namespace std;
    
    class Alphabet
    {
        public:
        Alphabet() {}
        ~Alphabet() {}
        virtual void Name() const {cout << "Alphabte\n";}
    };
    
    class A : public Alphabet
    {
        public:
        A() {}
        ~A() {}
        void Name() const {cout << "Buchstabe A im Alphabet\n";}
    };
    
    int main()
    {
        A UnterKlasse1;
        A UnterKlasse2;
    
        Alphabet &Basisklasse1=UnterKlasse1;
        Alphabet *Basisklasse2=&UnterKlasse2;
        Alphabet *Basisklasse3=new A;
    
        Basisklasse1.Name();
        Basisklasse2->Name();
        Basisklasse3->Name();
    
        return 0;
    }
    

    Dankeschön schon mal im Voraus.



  • Das ist schon grundsätzlich richtig so, aber Basisklassen sollte auf jeden Fall einen virtuellen Destruktor haben.


Anmelden zum Antworten