Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Operatoren...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.12.2004, 19:04 Uhr
rejo



Hallo Leute,
hab eine Frage bzgl. Operatoren.
Wann verwendet man friend Operatoren und wann ohne friend?
Bitte postet mir bin grad völlig verwirrt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.12.2004, 19:11 Uhr
derphilipder



Ich würde sagen, friend benutzt man prinzipiell dann, wenn Klassen/Funktionen so eng zusammenarbeiten, daß eine völlige Datenkapselung nicht sinnvoll ist.
Du musst das aber nicht tun...
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.12.2004, 19:46 Uhr
rejo



Ja aber wie sieht das mit den Operatoren aus.
Wenn das zum Beispiel friend ist oder nicht.
Was ist da der Unterschied?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.12.2004, 19:57 Uhr
derphilipder



Wenn Du für eine Klasse eine globale Operatorfunktion schreibst, macht es Sinn, sie in der Klasse als friend zu deklarieren, damit sie direkt mit deren Attributen arbeiten kann.
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.12.2004, 21:16 Uhr
rejo



Also ich meine wenn man operatoren überlädt dann kann man ja das friend oder nicht friend machen zB. friend bool operator <(Testklasse &a, Testklasse&b);

Wieso man manchmal friend und manchmal nicht friend benutzen sollte...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.12.2004, 21:25 Uhr
derphilipder



Du überlädst die Operatoren nicht als friend, sondern machst sie der Klasse als friend bekannt.

Wenn Du das nicht machst, kann der Operator auf die Private-Elemente nur über die Public-Methoden zugreifen, ansonsten eben direkt.

Ob Du den Operator als friend deklarierst ist eigentlich nur davon abhängig, wieweit Du die Datenkapselung der Klasse aufheben willst. Es ist eben "bequemer" für die Opperatorfunktion(und für den der sie schreibt) ein friend der Klasse zu sein.
Ist quasi ganz allein Deine Entscheidung!
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.12.2004, 02:34 Uhr
typecast
aka loddab
(Operator)


Es gibt auch friend operatoren. Nimm z.B. mal den operator<<


C++:
class myClass {
public:
  myClass() {}

  friend std::ostream& operator>>(std::ostream&, const& myClass);
}



Dieser Operator gehoert _nicht_ zur Klasse. Es wuerde ja auch keinen Sinn machen. Denn schliesslich wuerde er doch eher zur Klasse ostream gehoeren (ostream soll ja schliesslich ein Element der Klasse myClass ausgeben).

Andererseits benoetigt der operator>> vielleicht auch zugriff auf die Membervariablen der Klasse . Deswegen deklariert man diesen Operator als friend.

Im grunde genommen macht man das fuer alle operatoren, die eigentlich nicht zur Klasse selbst gehoeren, aber trotzdem Zugriff auf die protected Membervariablen der Klasse brauchen.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: