C++ - upcasting und downcasting

In meinem Beispiel:

In upcasting, sollte nicht die zweite d.print() call print "base"?

Ist es nicht "d" abgeleitete Objekt upcasted auf eine Basisklasse für ein Objekt?

Und downcasting, welche Vorteile hat es?

Können Sie uns erklären, Verallgemeinerung und niedergeschlagen in einer praktischen Art und Weise?

#include <iostream>
using namespace std;

class Base {
public:
    void print() { cout << "base" << endl; }
};

class Derived :public Base{
public:
    void print() { cout << "derived" << endl; }

};

void main()
{
    //Upcasting
    Base *pBase;
    Derived d;
    d.print();
    pBase = &d;
    d.print();

    //Downcasting
    Derived *pDerived;
    Base *b;
    pDerived = (Derived*)b;
}
  • Warum denkst du, dass die pBase Linie sollte sich ändern, das Verhalten von d.print(); ? Meinst du Fragen über pBase->print(); ?
InformationsquelleAutor Mihai | 2016-01-30
Schreibe einen Kommentar