Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

C


Index » educatie » » informatica » C
» Clase prietene


Clase prietene


Clase prietene

Putem defini si clase prietene, similar cu modul in care sunt definite functiile prietene. Daca o clasa A este prietena cu clasa B, A poate accesa membrii privati ai lui B. Clasele prietene sunt declarate folosind urmatoarea sintaxa (pentru A prietena cu B):

class B ;

Exemplu

// clasa prietena

#include<iostream>

#include<conio.h>

using namespace std;

class Patrat;

class Dreptunghi

void conversie(Patrat a);

class Patrat

friend class Dreptunghi;

void Dreptunghi::setValori(int a, int b)

void Dreptunghi::conversie(Patrat a)

int main ()

In acest exemplu am declarat clasa Dreptunghi prietena a lui Patrat. Functiile lui Dreptunghi au acces la membrii privati ai lui Patrat, mai exact la Patrat::latura - latura patratului.



Observam inca un aspect nou la inceputul acestui program - o declaratie vida a clasei Patrat. Aceasta este necesara, pentru ca in corpul lui Dreptunghi noi facem referinta la Patrat, in calitate de parametru a functiei conversie( . Daca nu includem aceasta declaratie vida, Patrat nu ar fi vizibila din definitia lui Dreptunghi. Definitia clasei Patrat se face mai jos. Daca am inversa definitia claselor Patrat si Dreptunghi, declaratia vida nu ar mai fi necesara.

Nota: Relatia de prietenie intre clase nu este simetrica. Daca A este prietena lui B, aceasta nu implica direct ca B este prietena lui A. Daca dorim, putem sa declaram 2 clase sa fie reciproc prietene - A prietena cu B si B prietena cu A. Relatia de prietenie nu este nici tranzitiva. Daca A este prietena cu B, iar B prietena cu C, aceasta nu inseamna in mod automat ca A este prietena cu C.






Politica de confidentialitate




Copyright © 2024 - Toate drepturile rezervate