Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vererbung

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
20.07.2004, 16:12 Uhr
~Alex
Gast


Guten Tag zusammen.

Habe eine ganz einfache Frage:

Kann eine Klasse von einer anderen die Public- und die protected- Komponenten erben und wenn ja wie ist die Syntax dazu?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.07.2004, 16:18 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Kommt drauf an, was Du beim Ableiten der Klasse angibst. Beispiel aus der MSDN:


C++:
#include <iostream.h>

class X
{
public:
  void setProtMemb( int i ) { m_protMemb = i; }
  void Display() { cout << m_protMemb << endl; }
protected:
  int  m_protMemb;
  void Protfunc() { cout << "\nAccess allowed\n"; }
} x;

class Y : public X {
public:
  void useProtfunc() { Protfunc(); }
} y;

void main()
{
  // x.m_protMemb;      error, m_protMemb is protected
  x.setProtMemb( 0 );  // OK, uses public access function
  x.Display();
  y.setProtMemb( 5 );  // OK, uses public access function
  y.Display();
  // x.Protfunc();      error, Protfunc() is protected
  y.useProtfunc();    // OK, uses public access function
                // in derived class
}



Wenn Du statt in der Definition von Y "protected X" schreibst, werden alle abgeleiteten public-Member automatisch protected; schreibst Du "private X", wird alles private.
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.07.2004, 02:39 Uhr
~truebool
Gast



C++:
#include <iostream.h>

class X
{
public:
  void setProtMemb( int i ) { m_protMemb = i; }
  void Display() { cout << m_protMemb << endl; }
protected:
  int  m_protMemb;
  void Protfunc() { cout << "\nAccess allowed\n"; }
} x;

class Y : public X {
public:
  void useProtfunc() { Protfunc(); }
} y;

void main()
{
  // x.m_protMemb;      error, m_protMemb is protected
  x.setProtMemb( 0 );  // OK, uses public access function
  x.Display();
  y.setProtMemb( 5 );  // OK, uses public access function
  y.Display();
  // x.Protfunc();      error, Protfunc() is protected
  y.useProtfunc();    // OK, uses public access function
                // in derived class
}



mal nen paar fragen .. öhh warum benutzt du iostream.h ???
und ausserdem noch void main() ich meine laut standart muss es doch <iostream> und auch int main(){return 0;} heissen oder
will nicht besser wissen verwirrt mich nur weil mir gesagt wurde ich soll drauf achten ...
ausserdem wo sind in der main die deklarationen von x und y ???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.07.2004, 02:56 Uhr
typecast
aka loddab
(Operator)



Zitat von Bruder Leif:

Beispiel aus der MSDN:



Das kommt nicht von ihm, sondern von der MSN. *hier wuerde ein Kommentar dazu stehen, aber mit Ruecksicht auf Windalf lasse ich das mal *

Aber prinzipiell hast du recht.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)

Dieser Post wurde am 22.07.2004 um 02:58 Uhr von typecast editiert.
 
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: