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 returned

    initialisierung 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


Anmelden zum Antworten