Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

1

12.02.2009, 20:44

Frage... vererbung?

Hi,

Frage:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
struct FrameInfo {
    public:
        int frame;
        int delay;
        int dx, dy;
        
        [color=red]
            FrameInfo(int index, int time, int x, int y) 
            : frame(index), delay(time), dx(x), dy(y) {
        }[/color] 
};


was bedeutet da rot geschrieben(vererbung oder was?)?
oder könnt ihr mir das rote genauer erklären??


Edit: ich bekomm die rote frabe nich hin, aber mann kanns ja trotzdem erkennen...
New Project: Operation CityRacer

2

12.02.2009, 20:46

Das ist ein Konstruktor mit Initialisierungsliste.
Lieber dumm fragen, als dumm bleiben!

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

3

12.02.2009, 20:47

und was bedeutet der Doppelpunkt?

..dann muss ich mir nochmal konstruktoren angucken
New Project: Operation CityRacer

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

12.02.2009, 20:49

Der starte die Liste. ":" = Beginn der Liste. Variablenname(wert_der_zugewiesen_werden_soll), nächste_variable(wert_der_zugewiesen_werden_soll) ....

In der Liste kann man z.B. const Variablen Werte zuweisen und den Konstruktur aufrufen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

5

12.02.2009, 20:51

aso k thx für die schnellen antworten ( 2 min. :shock: )
New Project: Operation CityRacer

Jevermeister

Treue Seele

Beiträge: 130

Wohnort: Bremerhaven

Beruf: Student

  • Private Nachricht senden

6

13.02.2009, 00:31

und noch was fürs Protokoll, falls du dich irgendwann mal wunderst:

wenn du nicht

Quellcode

1
 FrameInfo(int index, int time, int x, int y)  : frame(index), delay(time), dx(x), dy(y)
geschrieben hättest sondern

Quellcode

1
 FrameInfo(int index, int time, int x, int y)  :  dx(x), dy(y), frame(index), delay(time)
, würde er trotzdem Frame zuerst initalisieren. Die Reihenfolge wird von der Deklarierung bestimmt, nicht von der Initialisierung :)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

13.02.2009, 00:35

Wäre da nicht auch eine Klassendeklaration angebracht? Weil auf diese bezieht sich der Kompilier dann ja :).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Jevermeister

Treue Seele

Beiträge: 130

Wohnort: Bremerhaven

Beruf: Student

  • Private Nachricht senden

8

13.02.2009, 11:54

Die steht ja oben bei ihm :)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

13.02.2009, 13:28

Oha, mein Fehler. Daran dachte ich garnicht mehr.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

10

13.02.2009, 15:03

Mit Vererbung hat die Initialisierungsliste aber doch eine spezielle Bedeutung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Vehicle
{
    public:
        Vehicle(float Speed)
        : MySpeed(Speed)
        {
        }

    private:
        float MySpeed;
};

class Car : public Vehicle
{
    public
        Car(float Speed, int RoundsPerMinute)
        : Vehicle(Speed)       // hier wird der Basisklassenkonstruktor aufgerufen

        , MyRounds(RoundsPerMinute) // muss hier initialisiert werden, da konstant

        {
        }

    private:
        const int MyRounds;
};

Konstante Objekte und Referenzen müssen in der Initialisierungsliste initialisiert werden. Bei nicht zuweisbaren Objekten ist es auch von Vorteil, dies zu tun.

Werbeanzeige