Hallo Lutz!
prinzipiell bist Du bei Bruce Eckel gut aufgehoben, aber
konkret:
Ist das ein Buch?
Ich möchte für GTK einen Pascal-Wrapper baun, der
objektorientiert ist.
Mal bei freepascal.org geguckt, ob es sowas nicht schon gibt?
Ich schreibe das für FreePascal. Es gibt dort nur eine Unit für GTK, die einfach alle Prozeduren importiert. Es gibt aber keinen OOP Wrapper.
Michael van Canneyt macht zZ für die dt. Zeitschrift Toolbox einen Artikel, hat er gesagt. Darin entwickelt er einen OOP Wrapper. Wir werden zusammenhelfen.
Wenn der Destructor einer Klasse aufgerufen wird, werden dann
automatisch alle Destructoren der Vorgänger-Klassen auch
aufgerufen?
Du meinst Basisklassen? So aus der H"ufte heraus: Nein. Es
k"onnen ja von dort Daten ben"otigt werden, um die abgeleitete
Klasse ordentlich zu zerst"oren. Du musst sie also explizit
aufrufen, aber auch nur, wenn dort dynamische Daten liegen.
Hmm, eigentlich reichte es ja auch, den Destructor der eigentlichen Klasse aufzurufen, die Basis-Klassen-Destruktoren braucht man ja gar nicht, wenn die nix besonderes zu tun haben, oder?
Was bedeutet das Schlüsselwort „explicit“ vor einem
Constructor?
Dies bedeutet, dass der Destructor nicht vom Compiler einfach
am Blockende automatisch aufgerufen werden darf, sonder
explizit dort stehen muss. Geht auch bei Konstruktoren,
impliziter Aufruf bei Array-Allozierung.
Was ist ein Blockende? Is das nacht „}“? Gilt das für den automatische Garbage-Collector?
Ich hab hier nur „explicit“ Constructor, keine Destructor. Was bedeutet es dort? In einer Microsoft-Hilfe steht was von „no implicit type conversion“, der Text rundherum is aber absolut unverständlich. 
Noch was: Wenn in C++ einer Pointer-Variable, in der vorher ein Zeiger auf einen allozierten Heap-Bereich stand, einfach 0 zugewiesen wird, kommt dann auch der Garbage-Collector?
Wenn „o“ folgendermaßen definiert ist: „MyClass* o;“, was
macht dann „destroy o“; Ruft das den Destructor auf?
Nein, das ist nur ein Pointer. Erst mit o=new MyClass(…);
wird ein Objekt erzeugt. Wird dieses mit delete o; wieder
freigegeben, dann wird der Destruktor automatisch aufgerufen.
Da k"onnte aber das explicit in die Quere kommen.
Hmm, ich glaub, das war ned ganz richtig. Die Klasse is bereits (irgendwie) erzeugt und aufm Heap.
Destructoren sind keine mit „explicit“ deklariert.
Aha, aber Du sagst, der Constructor wird aufgerufen. Das beruhigt mich. 
Ist es schlimm,
wenn die Methode von irgendwo so aufgerufen wird, als wäre es
eine normale function?
Geht gar nicht. Wenn nicht mit Objekt verbunden, dann gibt es
einen Compiler-Fehler, weil er diesen „nackten“ Funktionsnamen
nicht kennt.
Teilweise etwas anders ist das mit statischen Klassenmethoden,
bei denen muss kein Objekt vorhanden sein, nur der
Klassenname.
In GTK (das is plain C) ist ein Feld in einer „struct“ folgendermaßen deklariert:
void (\* draw\_slider) (GtkRange \*range);
Die .h-Datei wird in einer C+±Datei inkludiert. Dort heißt es dann in Range_Class::class_init_function()
klass-\>draw\_slider=draw\_slider\_callback;
wobei klass genau so eine struct wie oben ist.
static void draw\_slider\_callback(GtkRange\* o\_);
ist eine Methode aus der Klasse Range_Class.
Er weist also einer Prozedure-Variabel von C eine C+±Methode zu. Diese Methode wird in den GTL-Libs wie eine normale C-Function aufgerufen.
Is das ok so? Hilft ihm da das „static“? Woher kriegen static-Methoden den „this“?
Bye
Hansi