C++ Tutorial
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ Tutorial
Hmm... das ist ein Teil der objektorientierten Programmierung, kommt also noch.
Tatsächlich ist die virtuelle Funktion eigentlich nicht nötig, um eine Null-Instanz zu erklären, den Part schreibe ich mal um.
Nehmen wir einen String. Eine Referenz braucht einen String. Wenn es jetzt keinen Nullpointer geben darf, könnte eine Null-Instanz des String der leere String sein. Es ist ein gültiges Objekt, man kann alles damit machen, was man mit einem normalen String auch kann, aber er hat halt keinen Inhalt.
Schaumal, ob der geänderte Text für Dich mehr Sinn ergibt.
Tatsächlich ist die virtuelle Funktion eigentlich nicht nötig, um eine Null-Instanz zu erklären, den Part schreibe ich mal um.
Nehmen wir einen String. Eine Referenz braucht einen String. Wenn es jetzt keinen Nullpointer geben darf, könnte eine Null-Instanz des String der leere String sein. Es ist ein gültiges Objekt, man kann alles damit machen, was man mit einem normalen String auch kann, aber er hat halt keinen Inhalt.
Schaumal, ob der geänderte Text für Dich mehr Sinn ergibt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
C++ Tutorial - Vererbung
Hallo Xin
Erstmal der Link:
https://www.proggen.org/doku.php?id=cpp ... ance:start
Mir sind bei diesen Code Fehler aufgefallen:
Bei class Hund fehlt bei der Funktion printf eine runde Klammer am Ende. Bei der Funktion GibNamenAus() fehlt nach der Funktion prinft eine geschweifte Klammer. So geht es auch weiter bei der class Katze und Amsel.
Bei dieser class fehlt nach printf am Ende ein geschweifte Klammer.
Hier sind die gleichen Fehler am Ende von printf wie beim Code oben:
Es fehlen bei allen drei class nach printf die abschließende runde Klammer.
Liebe Grüße
Xeon
Erstmal der Link:
https://www.proggen.org/doku.php?id=cpp ... ance:start
Mir sind bei diesen Code Fehler aufgefallen:
Code: Alles auswählen
class Hund
{
public:
char Name[64];
int Fellfarbe;
int KrallenLaenge;
int GefangeneKatzen;
int AnzahlBeine;
inline void GibLaut( void ) { printf( "Wau!\n"; }
inline void GibNamenAus( void ) { printf( "Ich heiße %s\n", Name );
};
class Katze
{
public:
char Name[64];
int Fellfarbe;
int KrallenLaenge;
int GefangeneVoegel;
int AnzahlBeine;
inline void GibLaut( void ) { printf( "Miau!\n"; }
inline void GibNamenAus( void ) { printf( "Ich heiße %s\n", Name );
};
class Amsel
{
public:
char Name[64];
int Fellfarbe;
int KrallenLaenge;
int GefangeneInsekten;
int AnzahlBeine;
inline void GibLaut( void ) { printf( "Piep!\n"; }
inline void GibNamenAus( void ) { printf( "Ich heiße %s\n", Name );
};
Code: Alles auswählen
class Tier
{
public:
char Name[64];
int Fellfarbe;
int KrallenLaenge;
int AnzahlBeine;
inline void GibNamenAus( void ) { printf( "Ich heiße %s\n", Name );
};
Hier sind die gleichen Fehler am Ende von printf wie beim Code oben:
Code: Alles auswählen
class Hund : public Tier
{
public:
int GefangeneKatzen;
inline void GibLaut( void ) { printf( "Wau!\n"; }
};
class Katze : public Tier
{
public:
int GefangeneVoegel;
inline void GibLaut( void ) { printf( "Miau!\n"; }
};
class Amsel : public Tier
{
public:
int GefangeneInsekten;
inline void GibLaut( void ) { printf( "Piep!\n"; }
};
Liebe Grüße
Xeon
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ Tutorial
Geändert, danke!
Geht nichts über ein zuverlässiges Copy'n'Paste.
Mit Deinem Account kannst Du solche Fehler auch selbst rausnehmen. Die sind wohl unfraglich.
Geht nichts über ein zuverlässiges Copy'n'Paste.

Mit Deinem Account kannst Du solche Fehler auch selbst rausnehmen. Die sind wohl unfraglich.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ Tutorial
Genau so. *Daumen hoch*

Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
C++ Tutorial - Methoden von Basisklassen rufen
Hallo zusammen
Hier der Link:
https://www.proggen.org/doku.php?id=cpp ... :overwrite
Liebe Grüße
Xeon
Hier der Link:
https://www.proggen.org/doku.php?id=cpp ... :overwrite
Kann mir jemand den Text erklären? Irgendwie habe ich es nicht verstanden. Aber was ein this-Zeiger ist weiß ich.Achtung: auch wenn hier statische gebundene Methoden überschrieben werden, so besteht ein Unterschied zu statischen Methoden. Statisch gebundene Methoden sind an den Datentyp unverändlich gebunden, erhalten aber eine Instanz des Objektes als this-Zeiger übergeben, in diesem Fall eine Instanz von Hund. Eine statische Methode ist unabhängig von einer Instanz der Klasse, hier gibt es entsprechend keinen this-Zeiger.
Liebe Grüße
Xeon
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ Tutorial - Methoden von Basisklassen rufen
Hey, ich habe erstmal den Code verändert:
Da wo jetzt VIRTUELL steht, stand vorher statisch.

Achtung: auch wenn hier statische gebundene Methoden überschrieben werden, so besteht ein Unterschied zu statischen Methoden (Methoden im Namensraum der Klasse, die als ''static'' deklariert sind). Statisch gebundene Methoden sind an den Datentyp gebunden, erhalten eine Instanz des Objektes als ''this''-Zeiger übergeben. In diesem Fall die Instanz von ''Hund''. Eine statische Methode ist unabhängig von einer Instanz der Klasse, hier gibt es entsprechend keinen ''this''-Zeiger, es handelt sich um eine ganz normale Funktion, die sich im Namensraum der Klasse.
Code: Alles auswählen
Hund * bello = new Hund();
bello->GibLaut(); // Standardverhalten : hier VIRTUELL gebundene Methode Hund::GibLaut()
bello->Hund::GibLaut(); // Explizites Verhalten: hier statisch gebundene Methode Hund::GibLaut()
bello->Tier::GibLaut(); // Explizites Verhalten: hier statisch gebundene Methode Tier::GibLaut()
Den Text habe ich auch etwas angepasst, guck mal, ob das weiterhilft, ansonsten muss ich nochmal ran.Xeon hat geschrieben: ↑Di Apr 13, 2021 2:23 pmKann mir jemand den Text erklären? Irgendwie habe ich es nicht verstanden. Aber was ein this-Zeiger ist weiß ich.Achtung: auch wenn hier statische gebundene Methoden überschrieben werden, so besteht ein Unterschied zu statischen Methoden. Statisch gebundene Methoden sind an den Datentyp unverändlich gebunden, erhalten aber eine Instanz des Objektes als this-Zeiger übergeben, in diesem Fall eine Instanz von Hund. Eine statische Methode ist unabhängig von einer Instanz der Klasse, hier gibt es entsprechend keinen this-Zeiger.

Achtung: auch wenn hier statische gebundene Methoden überschrieben werden, so besteht ein Unterschied zu statischen Methoden (Methoden im Namensraum der Klasse, die als ''static'' deklariert sind). Statisch gebundene Methoden sind an den Datentyp gebunden, erhalten eine Instanz des Objektes als ''this''-Zeiger übergeben. In diesem Fall die Instanz von ''Hund''. Eine statische Methode ist unabhängig von einer Instanz der Klasse, hier gibt es entsprechend keinen ''this''-Zeiger, es handelt sich um eine ganz normale Funktion, die sich im Namensraum der Klasse.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
C++ Tutorial - Mehrfachvererbung
Hallo zusammen
Hier der Link:
https://www.proggen.org/doku.php?id=cpp ... e:multiple
Ich verstehe schon wieder was nicht:
Hier der Link:
https://www.proggen.org/doku.php?id=cpp ... e:multiple
Ich verstehe schon wieder was nicht:
Die Referenz auf ein FullHDTelevision kann nun in einer Liste von Display-Instanzen genauso gehalten werden, wie in einer Liste von PowerConsumer-Instanzen. Genauso können Funktionen, die eine Referenz auf eine Display-Instanz oder eine Referenz auf eine PowerConsumer-Instanz benötigen, mit einer FullHDTelevision-Instanz gerufen werden.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ Tutorial
Könntest Du die Frage präzisieren?
Oder mir zumindest sagen, was Du verstehst und wo das nicht reinpasst?
Oder mir zumindest sagen, was Du verstehst und wo das nicht reinpasst?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ Tutorial
Ja, zum Beispiel.
std::list< Display * > oder std::vector< Display * > oder std::set< PowerConsumer * >
Eine Ansammlung mit einer Referenz auf ein Display. Das FullHDDisplay kannst Du überall verlinken.
std::list< Display * > oder std::vector< Display * > oder std::set< PowerConsumer * >
Eine Ansammlung mit einer Referenz auf ein Display. Das FullHDDisplay kannst Du überall verlinken.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.