C++ Tutorial
C++ Tutorial
Hallo Xin
Ich möchte hier auf proggen.org mit dem C++ Tutorial starten.
Lässt du noch das C++ Tutorial drin?
Liebe Grüße
Xeon
Ich möchte hier auf proggen.org mit dem C++ Tutorial starten.
Lässt du noch das C++ Tutorial drin?
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
Warum sollte ich es rausnehmen... ich plane es neu zu schreiben, aber das wäre in einem anderen Namensraum und wenn das fertig (irgendwann) ist, dann kille ich das jetzige Tutorial.
Einige Teile werde ich übernehmen, aber ich werde einen anderen Ansatz probieren. Das jetzige geht ja noch eher 'traditionell' vor.
Einige Teile werde ich übernehmen, aber ich werde einen anderen Ansatz probieren. Das jetzige geht ja noch eher 'traditionell' vor.
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 Objekte konstruieren
Hallo zusammen
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:construct
Folgenden Text verstehe ich nicht:
Liebe Grüße
Xeon
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:construct
Folgenden Text verstehe ich nicht:
Kann mir jemand nur den Text erklären? Den Code nicht.class Node
{
Node * Next;
Node * Prev;
List * Owner;
Data data;
Node( Node & previous );
};
Möchte man nun eine neue Node erzeugen und mit dem Konstruktor in die Liste einhängen, so lässt sich das programmieren, aber sobald eine Node kopiert werden soll, so wird die Kopie mit in die Liste eingehängt. Dies führt mit Garantie zu Problemen. Der Konstruktor, der den gleichen Typ als einziges Argument nimmt, muss als Kopierkonstruktor der Daten verwendet werden. Das bedeutet hier, dass die Daten kopiert werden müssen, und die Node selbst in keiner Liste eingehängt wird, damit wirklich nur kopiert wird und keine anderen Datenstrukturen verändert werden.
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 Objekte konstruieren
Der Konstruktor, der automatisch eine Node hinter der als Parameter übergebenen anhängt, hat die gleiche Signatur wie der Copy-Constructor (auch wenn dieser in der Regel Point const & ist). Man kann also nicht unterscheiden, ob Node( otherNode ) jetzt otherNode in die Liste einhängt oder otherNode kopiert wird, wie man das vermutlich erwartet. Ein Konstruktor, der wie ein Copy-Construktor aussieht, aber keiner ist, widerspricht also der üblichen Erwartungen, weswegen man sowas besser anders löst.Xeon hat geschrieben: ↑Di Mär 16, 2021 2:05 pmHallo zusammen
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:construct
Folgenden Text verstehe ich nicht:Kann mir jemand nur den Text erklären? Den Code nicht.class Node
Möchte man nun eine neue Node erzeugen und mit dem Konstruktor in die Liste einhängen, so lässt sich das programmieren, aber sobald eine Node kopiert werden soll, so wird die Kopie mit in die Liste eingehängt. Dies führt mit Garantie zu Problemen. Der Konstruktor, der den gleichen Typ als einziges Argument nimmt, muss als Kopierkonstruktor der Daten verwendet werden. Das bedeutet hier, dass die Daten kopiert werden müssen, und die Node selbst in keiner Liste eingehängt wird, damit wirklich nur kopiert wird und keine anderen Datenstrukturen verändert werden.
Aber ich glaube, an den Text sollte ich nochmal ran.

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 Statische Member
Hallo Xin
Ich weiß nicht ob du den Fehler bewusst oder unbewusst gemacht hast, aber ich stelle mal den Code rein.
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:static
Bei der Kommazahl sollte ein Punk sein statt ein Komma.
Beim Funktionskopf sollte kein Semikolon stehen.
Liebe Grüße
Xeon
Ich weiß nicht ob du den Fehler bewusst oder unbewusst gemacht hast, aber ich stelle mal den Code rein.
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:static
Code: Alles auswählen
class Math
{
public:
static double PI = 3,14159265;
static double Circumference( double radius );
};
Code: Alles auswählen
double Math::Circumference( double radius );
{
return 2 * PI * radius;
}
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 Statische Member
Ich bin bemüht, Fehler ausschließlich unbewusst zu machen.

Beide Fehler korrigiert, vielen Dank!

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 - Referenzen als Member
Hallo zusammen
Bin nun hier angelangt:
https://www.proggen.org/doku.php?id=cpp:ref:member
Ich habe alles abgetippt unten, doch leider will der Compiler nicht übersetzen. Hier mal der Code:
Die main Funktion:
Headerdatei rect.h:
Headerdatei point.h:
rect.cpp:
point.cpp
Bin nun hier angelangt:
https://www.proggen.org/doku.php?id=cpp:ref:member
Ich habe alles abgetippt unten, doch leider will der Compiler nicht übersetzen. Hier mal der Code:
Die main Funktion:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include "rect.h"
int main()
{
Rectangle * myRect;
Point topLeft( 1, 2 );
Point bottomRight( 3, 4 );
myRect = new Rectangle( topLeft, bottomRight );
myRect->Print( "myRect" );
delete myRect;
return 0;
}
Code: Alles auswählen
#ifndef RECT_H_INCLUDED
#define RECT_H_INCLUDED
#include "point.h"
class Rectangle
{
public:
Point & TopLeft;
Point & BottomRight;
Rectangle( int left, int top, int width, int height );
void Print( char const * prefix );
};
Rectangle( Point & topLeft, Point & bottomRight );
#endif // RECT_H_INCLUDED
Code: Alles auswählen
#ifndef POINT_H_INCLUDED
#define POINT_H_INCLUDED
class Point
{
public:
int XPosition;
int YPosition;
Point();
Point( int x, int y );
void Print( char const * prefix );
};
#endif // POINT_H_INCLUDED
Code: Alles auswählen
#include <stdio.h>
#include "rect.h"
Rectangle::Rectangle( Point & topLeft, Point & bottomRight )
: TopLeft( topLeft )
, BottomRight( bottomRight )
{
printf( "Rectangle-Konstruktor\n" );
}
void Rectangle::Print( char const * prefix )
{
printf( "Rectangle %s contains: \n", prefix );
TopLeft.Print( "topleft" );
BottomRight.Print( "bottomRight" );
}
Code: Alles auswählen
#include <stdio.h>
#include "point.h"
Point::Point() // Default-Konstruktor
: XPosition(0)
, YPosition(0)
{
printf( "Point: Default-Konstruktor\n" );
}
Point::Point( int x, int y )
: XPosition( x )
, YPosition( y )
{
printf( "Point: Konstruktor setzt Werte auf %d/%d\n", x, y );
}
void Point::Print( char const * prefix )
{
printf( "%s: %d/%d\n", prefix, XPosition, YPosition );
}
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ Tutorial - Referenzen als Member
...sondern er gibt folgende Fehlermeldung raus...? ^^
Ich habe den Text der Seite etwas angepasst. Du hast den geänderten Konstruktor unter die Klasse Rect kopiert. Der Konstruktor muss schon in der Klasse stehen. Die geänderten Konstruktoren ersetzen die vorherige Variante.
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.
Re: C++ Tutorial
Ich habe es jetzt so gemacht wie du geschrieben hast:Xin hat geschrieben: Ich habe den Text der Seite etwas angepasst. Du hast den geänderten Konstruktor unter die Klasse Rect kopiert. Der Konstruktor muss schon in der Klasse stehen. Die geänderten Konstruktoren ersetzen die vorherige Variante.
Code: Alles auswählen
class Rectangle
{
public:
Point & TopLeft;
Point & BottomRight;
Rectangle( Point & topLeft, Point & bottomRight );
void Print( char const * prefix );
};
C++ Tutorial - Dynamisch Referenzen erzeugen
Hallo zusammen
Ich schon wieder. Bin hier angelangt:
https://www.proggen.org/doku.php?id=cpp:ref:new
Folgenden Text verstehe ich nicht:
Liebe Grüße
Xeon
Ich schon wieder. Bin hier angelangt:
https://www.proggen.org/doku.php?id=cpp:ref:new
Folgenden Text verstehe ich nicht:
Was ist denn eine virtuelle Funktion?NULL-Pointer mit Referenzen ersetzen
Da man keinen Nullpointer an eine Referenz übergeben darf, wird gelegentlich mit Null-Instanzen gearbeitet. Dies ist eine Instanz der gewünschten Klasse, dass jedoch keine Funktion besitzt. Meist ist es ein statischer Member der Klasse, dessen (virtuelle) Funktionen beispielsweise so überschrieben sein können, dass sie keine Handlung mehr vornehmen. Die Null-Instanz kann so als Marker dienen, um sich von gültigen Instanzen zu unterscheiden. Wird eine Funktion des Markers gerufen, geschieht nichts.
Liebe Grüße
Xeon