Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Functii si Clase Prietene (Friend)

c


Functii si Clase Prietene (Friend

O functie este prietena cu o clasa daca are acces la datele membru private ale acelei clase. O functie prietena poate fi o functie globala sau chiar o functie membru a altei clase.



O clasa este prietena cu o alta clasa daca ea are acces la datele membru ale acesteia.

O functie, respectiv o clasa prietena se declara utilizand cuvantul friend astfel:

a)       friend Tip_functie Nume_functie Lista_parametri_formali Functie friend globala

b)       friend Tip_functie Nume clasa Nume_functie Lista_par._formali Functie friend membru

c)       friend Nume clasa Clasa friend

Urmatorul exemplu, nu este corect, deoarece elementul C.y nu este accesibil:

// Functie friend membru

# include <math.h> #include <iostream.h>

class Punct

Punct (float x0, float y0)

class Cerc

int TaieOx() inaccesibil

};

void main ()

// secret world

O solutie pentru a rezolva aceasta problema, ar putea fi declararea functiei membru TaieOx ca functie prietena a clasei Punct. Aceasta modificare nu este suficienta deoarece clasa Cerc nu a fost inca (deja!) definita, deci aceasta trebuie mai intai declarata, iar pentru ca aceasta refera clasa Punct vom declara (pur si) simplu clasa Punct pentru a putea referi centrul cercului ca pointer la Punct. Pentru ca y nu este data membru pentru cerc, functia TaieOx nu poate fi definita imediat, ci doar ulterior, dupa declararea completa a clasei Punct.

Functie friend membru

# include <math.h> #include <iostream.h>

class Punct;

class Cerc

int TaieOx();

};

class Punct

Punct (float x0, float y0)

friend int Cerc::TaieOx();

};

int Cerc::TaieOx()

void main ()

Exemple:

Functie globala friend

# include <dos.h>

# include <conio.h>

# include <graphics.h>

# include <iostream.h>

# define Cale 'c:BorlandCBgi'

class Grafic

~Grafic( )

};

class Punct

Punct (Punct& P)

void Muta ()

void Trag ()

~Punct ()

friend Punct Mijloc(Punct,Punct); // Functii globale

friend Punct Afin (Punct,Punct,float); friend

};

Punct Mijloc (Punct A, Punct B)

Punct Afin (Punct A, Punct B,float t)

class Segment

Segment (Punct P, Punct Q)

Segment (Segment& AB)

~Segment ()

Punct Mijlocs () Mijloc

Punct Afins (float t) Mijloc

void main (void)

delete AB; delete A; delete B; getche();

delete BC; delete CA;

Functie membru friend

# include <dos.h>

# include <math.h>

# include <conio.h>

# include <graphics.h>

# include <iostream.h>

# define Cale 'c:BorlandCBgi'

float Sqr (int x)

int    Sqrt (float x)

class Grafic

~Grafic( )

};

class Punct;

class Segment

Segment (Punct*,Punct*);

Segment (Segment&);

~Segment ();

Punct Mijloc ();

};

class Punct

Punct (Punct& P)

void Muta ()

void Trag ()

~Punct ()

friend Punct Segment::Mijloc();

};

Segment:: Segment (Punct *P, Punct *Q)

Segment:: Segment (Segment& AB)   

Segment::~Segment ( )

Punct Segment::Mijloc()

void main (void)

getche();

delete OX; delete OY; delete O; delete X; delete Y;

Clasa friend

# include <dos.h> # include <math.h> # include <conio.h> # include <graphics.h> # include <iostream.h>

# define Cale 'c:BorlandCBgi'

struct palettetype pal;    float Pi=3.1416, Alfa;

class Grafic

~Grafic( )

};

class Punct

Punct (float x0,float y0,int c)

Punct (Punct& P)

void Muta ()

void Trag ()

~Punct ()

friend Segment;

friend Cerc;

friend Triunghi;

};

class Segment

Segment (Punct P, Punct Q

Segment (Segment& AB)

~Segment ()

Punct Mijloc ();

friend Triunghi;

};

Punct Segment::Mijloc ()

class Cerc

Cerc (Punct P, int r0)

Cerc (Cerc& C)

Punct PeCerc(float a)

~Cerc ()

};

class Triunghi

Triunghi (Punct,Punct,Punct);

Triunghi (Triunghi& ABC)

Punct CentruGr()

~Triunghi ()

};

Triunghi::Triunghi(Punct P,Punct Q,Punct R)

void main (void)



Document Info


Accesari: 3567
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )