class Neka_Klasa
{
public:
Neka_Klasa();
~Neka_Klasa();
int saberi();
int pomnozi();
friend int oduzmi(Neka_Klasa &objekat); // ovde je proglašena prijateljem
public:
int x;
int y;
};
int oduzmi(Neka_Klasa &objekat); // deklaracija neke funckije koja prima referencu na objekat tipa Neka_Klasa
Neka_Klasa::Neka_Klasa()
{
x = 13; //proizvoljne vrednosti
y = 7;
}
Neka_Klasa::~Neka_Klasa()
{
}
int Neka_Klasa::saberi()
{
return(x+y);
}
int Neka_Klasa::pomnozi()
{
return(x*y);
}
int oduzmi(Neka_Klasa &objekat)
{
return(objekat.x - objekat.y);
}
int main(int argc, char *argv[])
{
Neka_Klasa P;
cout << P.saberi();
cout << P.pomnozi();
cout << oduzmi(&P); // što znači da će ova funkcija imati mogućnost da vidi private deo tog objekta...
}
Buffy ti je dao primer kada u prijateljskoj funkciji (u ovom slučaju u samom main-u) kreiraš objekat. Ja sam ti dao primer kada nad već iskreiranim objektom hoćeš prijateljskom funkcijom da promeniš privatne članove (ili ih direktno upotrebiš).
Prijateljske funkcije nemaju this pokazivač.
Prijateljsku funkciju možeš deklarisati ili u public ili u private ili u protected delu. Sve jedno je. Nema razlike.