[linux-l] Re: Function Pointer in C
Rocco Rutte
pdmef at cs.tu-berlin.de
Mi Jun 15 09:47:44 CEST 2005
Hi,
* Steffen Dettmer [05-06-15 00:36:23 +0200] wrote:
>* Rocco Rutte wrote on Sat, May 28, 2005 at 07:05 +0000:
>> In Java ist mein nicht-praktikabler Denksatz daher meist auch, Klassen
>> nur als Wrapper für dynamische Daten zu nutzen und anderswo Funktionen
>> darauf stets "static" zu deklarieren ("static" im Java Sinn)
>(ja, der ist in C++ der gleiche)
>Das static nimmt ja nur das implizite "this" weg, also der erste
>Parameter. Dafür musst Du sicherlich irgendeine Referenz auf die
>eigentlichen Daten übergeben, summa sumarum das gleiche.
Jein, bzw. ich weiss es nicht. Es gibt zum Beispiel die Methode
toString() aus Object. Wenn ich jetzt ein beliebiges Objekt erzeuge und
die Methode nicht überschreibe, dann weiss ich nicht wie das intern
organisiert wird. Werden dann immer die Implementierungen der
Superklassen per Pointer genommen oder wird vom toString()-Code eine
Kopie erzeugt und in den Speicher meiner Klasse eingefügt so dass die
gleiche Methode toString() für alle Instanzen separat verfügbar ist? Ich
weiss, dass das etwas verwirrend klingt, weshalb es mir vielleicht auch
noch niemand richtig erklären konnte. ;-)
Und weil ich es bisher immernoch nicht weiss, mache ich immer "static".
Ich muss dann zwar Sachen übergeben, weiss aber, dass alle Methoden pro
Laufzeit genau einmal im Speicher sind und nicht bei jedem Objekt neu
generiert werden.
Streng genommen macht es eigentlich gar keinen Sinn, dass man ein neues
Objekt vollständig zusammenbaut, indem man ihm alle nicht-geänderten
Methoden aus den übergeordneten Klassen als Implementierung mitgibt,
aber...
bye, Rocco
--
:wq!
Mehr Informationen über die Mailingliste linux-l