Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Klassen(Methoden): privat, public, protected

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
16.09.2008, 15:06 Uhr
Ollom



Ich bins mal wieder,
und zwar geht es darum klassen zu programmieren. jedoch verstehe ich nicht ganz was nun die unterschiede zwischen den einzelnen methoden sind. z.B.
Protected: heißt eigentlich geschützt aber irgendwie konnte es trotzdem werte weiter geben
Public und privat: eingentlich 2 unterschiedliche sachen jedoch immer das gleiche, die werte werden einfach weiter gegeben.
Kann mir nun jemand eine plausible und möglichst einfache (ich habe schon mehrer bücher mit fachchinesisch gewälzt, ohne erfolg) erklärung geben wann man was verwendet und was die unterschiede sein soll?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2008, 18:13 Uhr
0xdeadbeef
Gott
(Operator)


public, protected und private bestimmen die Sichtbarkeit einer Methode, nicht, was die Methode selbst macht. public bedeutet, dass jeder darauf zugreifen darf, private, dass es nur die Klasse selbst darf. protected bedeutet, dass nur die Klasse und von ihr abgeleitete Klassen darauf zugreifen dürfen. Konkret:

C++:
class foo {
public:
  void pub();

protected:
  void prot();

private:
  void priv();
};

class bar : public foo {
public:
  void baz() {
    pub(); // OK, jeder darf darauf zugreifen
    prot(); // OK, bar ist von foo abgeleitet
    priv(); // nicht OK, nur foo darf auf priv zugreifen.
  }
};

int main() {
  foo f;
  f.pub(); // OK, jeder darf darauf zugreifen
  f.prot(); // nicht OK, Zugriff nur aus foo und abgeleiteten Klassen
  f.priv(); // nicht OK, Zugriff nur aus foo.
}


...ist das so klarer?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.09.2008, 21:22 Uhr
öni



Eigentlich muss man sich nur merken, das Attribute immer private sind und Methoden immer public, und wenn du vererben tust kann das ein oder andere Attribut auch mal protected sein. Ausnahmen gibt es, sind aber selten.

Ich hoffe das stimmt nun mal so.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.09.2008, 14:35 Uhr
xXx
Devil


Kann man so nicht sagen, nein. Oftmals ist es sogar eher besserer Stil, mit mehr Funktionen zu arbeiten, d.h. das Modul in mehrere Teile unterteilen. Dafür kannst du auch private-Methoden brauchen, da die zwar nur intern von nöten sind, aber für die saubere Trennung unausweichlich sind.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: