Dringend Hilfe gesucht: Vererbung und Zeiger



  • Hallo,
    ich bräuchte dringen Hilfe.
    Was bedeutet:

    A a;
    B b;
    C c;

    A *pa = &b;
    B *pb = &c;

    Was bedeutet das für die Aufrufe in main?

    aus:

    [code="/** @brief A code example using virtual operations

    class A {
    private:
    void c() { };
    public:
    virtual void a() { };
    virtual void va() = 0;
    virtual void a(int n) { };
    };

    class B: public A {
    public:
    void b() { };
    virtual void vb() { };
    void a(double d) { };
    void a(int i) { };
    virtual void va() { };
    };

    class C: public B {
    public:
    virtual void c() { };
    void a(float f) { };
    virtual void a() { };
    virtual void va() { };
    };

    int main() {
    A a;
    B b;
    C c;

    A *pa = &b;
    B *pb = &c;

    double x = 7.7;

    pa->a();
    pa->va();
    pa->a(1);
    pa->c();
    pa->b();
    pa->vb();
    pa->a(x);

    pb->va();
    pb->a(1);
    pb->c();
    pb->b();
    pb->vb();
    pb->a(x);

    pa = &c;
    pa->a();
    pa->va();
    pa->a(1);
    pa->c();
    pa->b();
    pa->vb();
    pa->a(x);
    }"]


  • Mod

    Du meinst, was A *pa = &b; bedeutet? Das definiert einen Zeiger namens pa auf ein A, der mit dem Wert &b (der Adresse von b) initialisiert wird. Das geht, obwohl b ein B ist, weil jedes B auch ein A ist.

    Das sollten übrigens so ungefähr die ersten beiden Sachen sein, die man lernt, wenn man sich mit den beiden Themen Zeiger und Vererbung beschäftigt.


Anmelden zum Antworten