Konstruktorenfrage
-
Hallo
ich habe zwei Klassen, Image und animImage.
class image { public : image() { } } class animimage { private : image frame*; }
Wie man sieht, enthält animimage ein Attribut vom Typ Image.
Wenn ich jetzt ein Objekt der Klasse animImage erstelle, wird dann automatisch der Konstruktor von image aufgerufen ?
-
Nein, da es sich um einen Zeiger hält. Diese(n) musst du selber initialisieren.
-
sbrog schrieb:
Hallo
ich habe zwei Klassen, Image und animImage.
[...]
Wie man sieht, enthält animimage ein Attribut vom Typ Image.
Wenn ich jetzt ein Objekt der Klasse animImage erstelle, wird dann automatisch der Konstruktor von image aufgerufen ?wenn ich versuche, exakt auf deine frage zu antworten, würde ich erstmal sagen: JA.
denn: wenn du jetzt meinetwegen in der int main() ein objekt der klasse animImage erstellst, z.b. so:class animImage { //... }; //... int main() { animImage foo_obj; //hier erstellst du jetzt ein objekt der klasse }
..wird imho schon der cnstr aufgerufen...
edit:schliessendes cpp-tag vergessen
-
class animimage { private : image frame*; // du meinst wohl image* frame; --bashar }
Wie man sieht, enthält animimage ein Attribut vom Typ Image.
Nein, es enthält eine Membervariable vom Typ "Zeiger auf image".
Wenn ich jetzt ein Objekt der Klasse animImage erstelle, wird dann automatisch der Konstruktor von image aufgerufen ?
Nein natürlich nicht, woher soll der Compiler denn wissen, dass du genau das haben willst? Vielleicht willst du frame auf irgendwas zeigen lassen was irgendwoanders schon existiert.
-
Danke für die antworten, wenn ich jetzt aber Speicher reserviere :
frame = new image[10]
Wird dann de Konstruktor aufgerufen ?
-
Ja, insgesamt 10mal, für jedes Array-Element einmal.
-
Ok, danke, das wollte ich auch damit erreichen