Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

c++: frage zu arrays

Yves3 / 11 Antworten / Flachansicht Nickles

hallo


ich hab mal wieder eine frage zu c++ ;-) der erste quellcode ist aus meinem programmierbuch. warum wird dort der zeiger "pCat" verwendet? was ist an meiner lösung(source 2) anders? warum wurde das im buch nicht so gelöst?


danke für alle antworten!


<b>source 1:</b>


#include <iostream.h>


class CAT
{
public:
 CAT() { itsAge = 1; itsWeight = 5; }
 ~CAT();
 int GetAge() const { return itsAge; }
 int GetWeight() const { return itsWeight; }
 void SetAge(int age) { itsAge = age; }


private:
 int itsAge;
 int itsWeight;
};


CAT::~CAT()
{
// cout << "Destruktor aufgerufen!\n";
}


int main()
{
 CAT * Family = new CAT[500];
 int i;
 CAT * pCat;
 <b> 


for(i = 0; i<500 ; i++)
 {
  pCat = new CAT;
  pCat->SetAge(2*i +1);
  Family[i] = *pCat;
  delete pCat;
 }</b>


 for(i = 0; i<500; i++)
  cout << "Katze#" << (i+1) << ": " << Family[i].GetAge() << endl;


 delete [] Family;


 return 0;
}


<b>source 2</b>


#include <iostream.h>


class CAT
{
public:
 CAT() { itsAge = 1; itsWeight = 5; }
 ~CAT();
 int GetAge() const { return itsAge; }
 int GetWeight() const { return itsWeight; }
 void SetAge(int age) { itsAge = age; }


private:
 int itsAge;
 int itsWeight;
};


CAT::~CAT()
{
// cout << "Destruktor aufgerufen!\n";
}


int main()
{
 CAT * Family = new CAT[500];
 int i;
 <b>
 for(i = 0; i<500 ; i++)
 {


  Family[i].SetAge(2*i +1);


 }</b>


 for(i = 0; i<500; i++)
  cout << "Katze#" << (i+1) << ": " << Family[i].GetAge() << endl;


 delete [] Family;


 return 0;
}

bei Antwort benachrichtigen
Kleine Ergänzung vergisses
Kleine Ergänzung Yves3
Kleine Ergänzung mr.escape
Kleine Ergänzung Yves3
vergisses Yves3 „Kleine Ergänzung“
Optionen

Sorry, dass ich mich jetzt erst melde, ich war unterwegs.

Deine Aussage, dass ein CAT Object an das Andere zugewiesen
wird, ist richtig.

Meine Ausführungen sind tatsächlich teilweise falsch.
Vergiss die Sache mit den Pointern.
Aber in Bezug auf die Kopieraktion halte ich meine Ausführung
nach wie vor für richtig.
Wird das CAT Objekt mit allen Inhalten oder
wird nur die Referenz kopiert ?

Objekte sind doch zusammengesetzte Datentypen und
Objektvariable letzlich ein Zeiger auf den Beginn
der vom Objekt belegten Speicherfläche.
Wenn ich Datenstrukturen kopieren will, kann ich das
doch auch nicht durch eine einfache Zuweisung tun,
sondern muss jede Membervariable einzeln kopieren, oder ?

Ich werde das Ganze mal austesten und dann berichten,
was dabei rauskam.

Gruss, vergisses

bei Antwort benachrichtigen
Kleine Ergänzung mr.escape
Kleine Ergänzung vergisses
Kleine Ergänzung mr.escape
Kleine Ergänzung vergisses