Klassen/Zeigerfrage
-
also, bin noch noob und hab mal ne frage und hoffe, dass ich sie ins richtige forum geschrieben hab
folgende klasse:class cat { public: cat(int age); ~cat(); private: int itsAge; }; cat::cat(int age) { itsAge = age; } cat::~cat() { }
nun möchte ich ein cat-objekt auf dem heap erzeugen, der konstruktor verlangt ja aber ein argument, muss es nun...
cat frisky(10) = new cat;
...oder...
cat frisky = new cat(10);
...heißen?
ich tendiere zum ersten, bin mir aber net suicher und ersuche euch deshalb um rat
(probieren kann ich es net, darf mir aus irgendeinem schwachsinnigen grund keinen compiler auf mum´s pc machen... -___-)
-
Hi,
keines der beiden ist richtig, allerdings ist das zweite richtiger. Es muss heißen:cat *pFrisky = new cat(10);
Der Rückgabewert von new ist ein Pointer und kein konkretes Objekt
Mfg, smasher1985
-
achso, naja gut.
oh, sehe grade auch, dass ich frisky nicht als zeiger deklariert (oder initialisiert...??) habe, aber kann ja mal passieren...
trotzdem danke,
cya
-
Original erstellt von DivineIulerion:
deklariert (oder initialisiert...??)deklariert.
deklarieren heißt:
bekanntmachen, dass es soetwas gibt.void foo();
das ist eine deklaration. sie sagt:
es gibt eine funktion foo, die keinen parameter nimmt und nix returnedinitialisierung wäre eine wertezuweisung (int i=5;)
und definition das echte anlegen des 'objektte'
void foo() {}int i=5;
ist alles 3 in einem
-
cool, dann ist int i = 5 ja eine "deklatianition"
cya