OOP und Zeiger
-
Abgesehen davon hat das mit OOP ja oder nein überhaupt nichts zu tun, sondern mit der Implementierungssprache. Da es in C++ keine Nullreferenzen gibt, und new einen Zeiger zurückgibt, dürfte es mindestens unpraktisch, wenn nicht gar unmöglich sein, einen richtigen objektorientierten Entwurf auszuprogrammieren.
Wie das in Object Pascal und Ada (die einzigen anderen OO-ermöglichenden Sprachen, dir mir jetzt einfallen und Pointer haben) aussieht, weiß ich nicht, aber ich vermute ähnlich.
-
OO ist ein Programmirstil. Sowas wie ein paar Tricks, damit man mehr übersicht behält. Wenn die Sprache keine Zeiger kennt, wie BASIC oder Java, dann nimmt man auch keine. Wenn sie Zeiger kennt, wie C oder Pascal, dann nimmt man sie.
Und ganz wie Bashar nachwies, gehts in C++ gar nicht ohne Zeiger.
-
Dein Lehrer meinte wohl, dass man sich nicht ungeschützt min dyn. Speicher hantiert.
also kein
int* p = new(int(3));
Das hängt aber nur indirekt mit OO zusammen.
-
Original erstellt von kartoffelsack:
Das hängt aber nur indirekt mit OO zusammen.und wie hängt das zusammen?
-
vielleicht war das ja auch so gemeint, dass es in C++ zusätzlich referenzen gibt und man die z.B nun bei funktionsparametern benutzen kann anstelle von zeigern
-
Dynamischen Speicher mit Referenzen zu handhaben ist möglich, aber unnötig mehr arbeit. Und ich verwende in C++ Zeiger häufig als Iteratoren (auch wenn mir der Name iterator irgendwie nicht gefällt). Und ich denke, dass machen auch viele andere so.
-
und wie hängt das zusammen?
Man verpackt den rohen Zeiger in ein Objekt.
Objekt <-> OO :p
Das is natürlich aber c++-spezifisch und nicht allgemein.
-
Original erstellt von kartoffelsack:
**
Man verpackt den rohen Zeiger in ein Objekt.Objekt <-> OO :p ;)**
naja... das hat nix mit OOP zu tun, sondern mit kapselung, und kapseln kann man auch ohne OOP.
-
Kapselung ist aber Teil von OOP
Aber eigentlich hat das noch nich mal was mit Kapselung zu tun. Das hat damit zu tun, dass C++ den Destruktor automatisch ausführt und man damit 1. nicht vergisst, die Resource freizugeben und 2. sie auch bei ner Ausnahme freigegeben wird.
-
Original erstellt von kartoffelsack:
Aber eigentlich hat das noch nich mal was mit Kapselung zu tun. Das hat damit zu tun, dass C++ den Destruktor automatisch ausführt und man damit 1. nicht vergisst, die Resource freizugeben und 2. sie auch bei ner Ausnahme freigegeben wird.ah, du meinst RAII - das hat aber auch nix mit OOP zu tun, da es OO Sprachen ohne Destruktor gibt. Es gibt auch OO Sprachen ohne Exception...