Draugo funkcijos ir draugo klasės skirtumas
Turinys
Funkcija „Draugas“ ir „Draugų klasė“ yra būdai, naudojami priėjimui prie privačių klasės narių, naudojant draugo žodį. Bendras skirtumas tarp draugo funkcijos ir draugo klasės yra tas, kad kai naudojama draugo funkcija, prieiga prie privačios klasės narių gali būti prieinama, tačiau draugų klasėje prieinami tik draugų klasės vardai, o ne privatūs klasės nariai.
draugo funkcija ar tai naudojama funkcija, ar klasė, gali turėti neigiamos įtakos į objektą orientuotai sistemai, nes ji silpnina inkapsuliacija kuri yra prieš orientuotas į objektą paradigma. Dėl šios priežasties draugo funkcija turi būti naudojama protingai, nes kitaip ji galėtų būti pertrauka duomenų slėpimas kodo.
Ši draugo savybė nėra komutacinis ir nei pereinamasis. X yra Y draugas, nenulemia, kad Y taip pat yra X draugas. Jei X yra Y draugas, o Y yra Z draugas, nereiškia, kad X yra Z draugas.
-
- Palyginimo diagrama
- Apibrėžimas
- Pagrindiniai skirtumai
- Išvada
Palyginimo diagrama
Palyginimo pagrindas | Draugo funkcija | Draugų klasė |
---|---|---|
Pagrindinis | Tai funkcija, naudojama kartu su draugu, siekiant suteikti privatiems klasės nariams prieigą prie ne nario funkcijos. | Tai klasė, naudojama kartu su draugu, norint pasiekti privačius kitos klasės narius. |
Išankstinė deklaracija | Turi būti naudojamas. | Nera privalomas. |
Naudokite | Draugo funkcija gali būti naudojama tam tikroje situacijoje, kai operatorius perkraunamas. | Draugų klasė gali būti naudojama, kai klasė sukuriama kitos klasės viršuje. |
Draugo funkcijos apibrėžimas
draugo funkcija naudojamas privačių ir saugomų klasės narių prieigai, suteikiant galimybę ne nario funkcijai pasiekti. Tokio tipo funkcijose prieš funkcijos pavadinimą deklaravimo metu naudojamas draugo raktinis žodis. Draugo funkcijai taikomos kelios ribojančios sąlygos. Pirma sąlyga - draugo funkcija nėra paveldima vaikų klasėje. Antroji sąlyga yra ta, kad saugojimo klasės specifikatoriaus gali nebūti draugo funkcijoje, o tai reiškia, kad jo negalima deklaruoti kaip statinio ir išorinio.
Draugo funkcija nėra iškviečiama kviečiant klasės objektą. Draugo funkcijos pavyzdžiai yra šie: bendroji funkcija, klasės nario funkcija, funkcijos šablonas gali būti draugo funkcija. Supraskime tai naudodamiesi pavyzdžiu.
# įtraukti Draugo funkcija reikalinga, kai funkcijai reikia prisijungti prie dviejų ar daugiau nepriklausomų klasių, vidinių narių. Kita vertus, draugų klasė reikalinga, kai klasei reikia prisijungti prie kitos klasės narių. Kai kelių narių funkcija turi būti tos funkcijos draugu, tokiu atveju geriau naudoti draugų klasę.
Išvada