Joachim: Nochmal zu Destruktor

Hi,

ich habe da noch etwas eigenartiges zu Destruktoren gefunden:

"In Perl existieren im Gegensatz zu anderen objektorientierten Pro-
grammiersprachen keine Destruktor-Funktionen zum Löschen von Objek-
ten. Ein Objekt wird automatisch gelöscht, wenn keine Referenz mehr
auf dieses Objekt existiert. Der Programmierer muß sich also auch in
diesem Fall keine Gedanken über die Speicherverwaltung für Objekte
machen."

gefunden in:
http://www.krienke.org/books/perlbu/download/exampkap10.pdf

Was soll ich davon halten?

Vielen Dank,
Joachim

  1. Hallo,

    Warum hast du die Frage  nicht hierzu gepostet?:
       http://forum.de.selfhtml.org/?m=76159&t=13728

    "In Perl existieren im Gegensatz zu anderen objektorientierten Pro-
    grammiersprachen keine Destruktor-Funktionen zum Löschen von Objek-
    ten. Ein Objekt wird automatisch gelöscht, wenn keine Referenz mehr
    auf dieses Objekt existiert. Der Programmierer muß sich also auch
    in diesem Fall keine Gedanken über die Speicherverwaltung für
    Objekte machen."

    gefunden in:
    http://www.krienke.org/books/perlbu/download/exampkap10.pdf

    Was soll ich davon halten?

    Eine Verschwemmung der Begrifflichkeiten. Der Autor des Textes
    meinte, dass man in Perl Objekte nicht explizit freigeben kann/muss.
    Das dass uU nicht so ganz stimmt, sollte sich von selbst verstehen.

    Destruktoren im Sinne von Funktionen, die aufgerufen werden, wenn das
    Objekt zerstoert wird, gibt es natuerlich schon.

    Gruesse,
     CK

    1. Hallo,

      Warum hast du die Frage  nicht hierzu gepostet?:
         http://forum.de.selfhtml.org/?m=76159&t=13728

      "In Perl existieren im Gegensatz zu anderen objektorientierten Pro-
      grammiersprachen keine Destruktor-Funktionen zum Löschen von Objek-
      ten. Ein Objekt wird automatisch gelöscht, wenn keine Referenz mehr
      auf dieses Objekt existiert. Der Programmierer muß sich also auch
      in diesem Fall keine Gedanken über die Speicherverwaltung für
      Objekte machen."

      gefunden in:
      http://www.krienke.org/books/perlbu/download/exampkap10.pdf

      Was soll ich davon halten?

      Eine Verschwemmung der Begrifflichkeiten. Der Autor des Textes
      meinte, dass man in Perl Objekte nicht explizit freigeben kann/muss.
      Das dass uU nicht so ganz stimmt, sollte sich von selbst verstehen.

      Destruktoren im Sinne von Funktionen, die aufgerufen werden, wenn das
      Objekt zerstoert wird, gibt es natuerlich schon.

      Gruesse,
      CK

      Hi, nochmal ich ...,
      bevor ich jetzt verwirrt werde von den vielen Informationen, die
      ich habe, möchte ich nochmal sicher gehen.

      • Ich habe schon einige Klassen gesehen (auch bei SELFHATML), die keine DESTROY-Funktion haben. Haben die etwas vergessen, da du (CK) mir geschrieben hast, ich müsse die DESTROY-Funktion definieren?

      Ist deshalb folgendes richtig:

      • Perl zerstört die Instanzen einer Klasse selbst. Dabei wird (wahrscheinlich) die DESTROY-Funktion aufgerufen.
      • In dieser kann man dann besondere Aktivitäten einbauen, die beim Zerstören des Objekts geschehen sollen (zum Beispiel ein File schließen.).

      Vielen Dank für deine Mühe
      Joachim

      1. Hallo,

        lesenswert: http://learn.to/quote

        • Ich habe schon einige Klassen gesehen (auch bei SELFHATML), die
          keine DESTROY-Funktion haben. Haben die etwas vergessen, da du (CK)
          mir geschrieben hast, ich müsse die DESTROY-Funktion definieren?

        Nein, der Destruktor ist keine Pflicht -- er ist optional.

        Ist deshalb folgendes richtig:

        • Perl zerstört die Instanzen einer Klasse selbst. Dabei wird
          (wahrscheinlich) die DESTROY-Funktion aufgerufen.

        Lass das 'wahrscheinlich' weg, sie *werden* aufgerufen -- wir sind
        hier nicht bei Java ;-))

        • In dieser kann man dann besondere Aktivitäten einbauen, die
          beim Zerstören des Objekts geschehen sollen (zum Beispiel ein
          File schließen.).

        Richtig.

        Gruesse,
         CK