[ djordje @ 18.12.2005. 18:36 ] @
Mozete li mi reci ukratko sta se postize funkcijama koje se definisu u okviru klase kao prijateljske funkcije? |
[ djordje @ 18.12.2005. 18:36 ] @
[ japan @ 18.12.2005. 18:42 ] @
ukratko, funkcija koja je definisana kao friend za neku klasu može da "vidi" privatne promenljive te klase.
[ djordje @ 18.12.2005. 20:21 ] @
Moze li neko da da konkretan primer koda?
[ Buffy @ 18.12.2005. 23:38 ] @
Code: #include <iostream> using namespace std; int main(); class a{ public: int a; private: int b; friend int main(); }; int main(){ a obj; obj.b=10;//ovo je privatan clan cout<<obj.b<<endl; return 0; } [ Goran Arandjelovic @ 18.12.2005. 23:49 ] @
Code: #include <iostream> using namespace std; 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... } [ djordje @ 18.12.2005. 23:58 ] @
E sad je jasno. Hvala
[ Goran Arandjelovic @ 19.12.2005. 00:01 ] @
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. [ DDMM @ 20.12.2005. 12:43 ] @
Drugim recima:
Only your friends can handle with your private parts. I jos uslovi za mene specificni: true ==( typeid(friend).name() == std::string( "female18224" ) ); A ostali neka odaberu po svojoj volji. [Ovu poruku je menjao DDMM dana 20.12.2005. u 14:05 GMT+1] Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|