Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
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