[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