Funkce přítele - Friend function - Wikipedia
v objektově orientované programování, a funkce přítele, to je „přítel“ daného člověka třída, je funkce, která má stejný přístup jako metody k soukromým a chráněným data.[1]
Funkce friend je deklarována třídou, která uděluje přístup, takže funkce friend jsou součástí rozhraní třídy, jako jsou metody. Funkce Friend umožňují například alternativní syntaxi používat objekty f (x)
namísto x.f ()
nebo g (x, y)
namísto x.g (y)
. Funkce přátel mají stejné důsledky zapouzdření jako metody.
Podobný koncept je koncept třída přátel.
Případy užití
Tento přístup lze použít v přátelské funkci, když funkce potřebuje přístup k soukromým datům v objektech ze dvou různých tříd. Toho lze dosáhnout dvěma podobnými způsoby
- funkce globálního nebo jmenný prostor obor může být prohlášen za přítele obou tříd
- členská funkce jedné třídy může být deklarována jako přítel jiné.
#zahrnout <iostream>použitím jmenný prostor std; třída Foo; // Předat deklaraci třídy Foo například pro kompilaci.třída Bar { soukromé: int A = 0; veřejnost: prázdnota ukázat(Bar& X, Foo& y); příteli prázdnota ukázat(Bar& X, Foo& y); // prohlášení globálního přítele}; třída Foo { soukromé: int b = 6; veřejnost: příteli prázdnota ukázat(Bar& X, Foo& y); // prohlášení globálního přítele příteli prázdnota Bar::ukázat(Bar& X, Foo& y); // prohlášení přítele z jiné třídy }; // Definice členské funkce Bar; tento člen je přítel Fooprázdnota Bar::ukázat(Bar& X, Foo& y) { cout << "Zobrazit prostřednictvím funkčního člena panelu" << konec; cout << "Bar :: a =" << X.A << konec; cout << "Foo :: b =" << y.b << konec;} // Friend for Bar and Foo, definition of global functionprázdnota ukázat(Bar& X, Foo& y) { cout << „Zobrazit prostřednictvím globální funkce“ << konec; cout << "Bar :: a =" << X.A << konec; cout << "Foo :: b =" << y.b << konec;} int hlavní() { Bar A; Foo b; ukázat(A,b); A.ukázat(A,b);}
Reference
- ^ Holzner, Steven (2001). C ++: Černá kniha. Scottsdale, Arizona: Coriolis Group. str. 397. ISBN 1-57610-777-9.
Když prohlásíte funkci za přítele třídy, má tato funkce přístup k interním datovým členům tohoto objektu (tj. K jeho chráněným a soukromým datovým členům.)
externí odkazy
- Výukový program pro funkce přátel C ++ na CoderSource.net
- Výukový program přátelství a dědictví v C ++ na cplusplus.com