Das braucht man doch nur, wenn man es auf dem Heap deklariert, oder?
Korrekt, aber der eigentliche Vorteil ist der, dass man die Deklaration von
der Instantiierung örtlich trennt. D.h. man kann eine Variable vom Typ "Rat * x" ganz
früh deklarieren und erst viel später, wenn man es denn dann braucht,
mit "x=new Rat()" instantiieren.
Das Kommando "new Rat()" steht in einer Methode - und würde die
Variable für die Ratte auch da stehen, dann wär sie ja lokal... Aber wenn
man der Klasse eine Variable "Rat * x" gibt, dann können alle Klassenmethoden
auf die Ratte zugreifen (sobald sie instantiiert ist!).
Ein Problem mit dieser Lösung ist: Dran denken "delete x" aufzurufen!
Darum wäre es schöner und sicherer, direkt "Rat x" (ohne Pointer) in der Klasse zu
deklarieren. Das geht aber nur, wenn die Ratte einen Defaultkonstruktor
hat. In diesem
Fall wird die Ratte erstellt sobald die zugehörige Klasse erstellt wird.
Stefan