A friend viszony öröklődik ez mit jelent? C++.
Tipp:
Azt jelenti,hogy ha egy barátként deklarált osztálynak a leszármazottjai megkapják azokat az adattagokat és függvényeket is amelyek valójában nem a barátosztályban lettek deklarálva?
De a publikusokat nem ugye mert egy barátosztály nem kapja meg a publikus adattagjait.
Nem tudom elmagyarázni. :(Segítsetek.
És egyébként gyakorlatilag mi történik amikor barát kulcsszóval deklarálok egy típust.
És mi ha globális függvénnyel.
Gondolom a függvény kap egy this mutatót.
A friend osztálynak a privát és protected adattagjai átmásolódnak a másik osztályba?
A friend viszony NEM öröklődik.
"Azt jelenti,hogy ha egy barátként deklarált osztálynak a leszármazottjai megkapják azokat az adattagokat és függvényeket is amelyek valójában nem a barátosztályban lettek deklarálva?"
Ez a mondatot meg nem is értem.
// main.cpp
# include <iostream>
class cProba;
class cProba {
public:
int u = 0 ;
private:
friend class cProba2 ;
short j = 2 ;
};
class cProba2 {
public:
void f(void)const { std::cout << j ; }
int h = 9 ;
private:
short o = 4 ;
};
int main() {
cProba2 x ;
x.f() ;
return 0 ;
}
A cProba2 a cProba -ban friend ként van deklarálva és mégsem tudom a publikus tagfüggvényével elérni a cProba privát és publikus adattagjait.
Akkor most hogy is van ez?
Nem jó:
// main.cpp
# include <iostream>
using std::cout ;
class cProba ;
class cProba {
public:
friend void printi_j(void) ;
short i_getj(void)const { return i_j ; }
protected:
private:
short i_j ;
};
void printi_j(void) { cout << i_j ; }
int main(void) {
cProba x ;
printi_j() ;
return 0 ;
}
De miért nem éri el ha friend?
Egyébként a friend függvény is a this mutatón keresztül éri el az adattagokat?
És egy helyben kifejtett friend függvény nem tagfüggvény ?
"Ugyanígy a friend típus is csak annyi, hogy ha ráteszi a kezét egy olyan típusra, akkor eléri a privát részeit. De ő nem kapja meg azokat."
Ha ez igaz akkor mi értelme van ennek az egésznek.
Minek kellet megírni a friendet.
Hát istenem csinálok egy nem friend függvényt át adok neki egy X típusú objektumot és ugyanúgy el fogja tudni érni az X adattagjait.
Minek egy osztályon belül deklarálni azt a globális friend függvényt.Teljesen felesleges az egész.Butaság.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!