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;
}