SimpleCat je pretpostavljam klasa,
to što si napisao znači da funkcija vraća pokazivač na klasu SimpleCat;
ovo ti je primjer prenošenja parametara funkciji putem reference, imas dosta o tome u svim relevantnim knjigama o C++;
Hm, pokušaću ti na jednostavan način objasniti,
u prvoj funkciji parametar se prenosi po vrednosti tj. u funkciji se pravi kopija onog objekta koji si prosljedio toj funkciji; u ovom slučaju to je objekat klase SimpleCat, Frisky. Sve što uradiš sa tim objektom unutar funkcije po izlazku iz funkcije se gubi.
Eh, sada. Da bi te promjene imale uticaja na izvorni objekat onda taj objekat moraš prenijeti funkciji preko reference, tj. pomoću pokazivača čime prenosiš adresu Friskya; Sve što uradiš sa njim u funkciji reflektuje se njega, jer se ne pravi nova kopija tog objekta već se radi sa stvarnim objektima;
Code:
#include <iostream>
using namespace std;
void f (int,int*);
main()
{
int i=10;
int k=10;
cout << ”main: i:" << i << "k: " << k << endl; // prije funkcije
f(i,&k);
cout << ”main: i:" << i << "k: " << k << endl;
}
void f (int i, int *k)
{
cout << "f: i:"<< i << " k: " << *k << endl;
*k=20;
cout << "f: i:"<< i << " k: " << *k << endl;
}
pogledaj ovaj primjer mozda ti bude jasnije;
"A ko behu oni divi,
koji su te napred zvali,
koji su te ojačali,
koji su ti krila dali?
To bejahu ideali!"
J.J.Zmaj