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

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

11

19.07.2012, 09:31

Ich würde dir empfehlen, dich nochmals mit Vererbung und Polymorphie auseinander zu setzen. Das sind beides ganz wichtige Themen in jeder objektorientierten Sprache und sollten unbedingt vollständig verstanden werden.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

12

19.07.2012, 10:13

Der Konstruktor von CMinenleger ruft implizit den Konstruktor von CRaumschiff auf...

sicher?
ich abe zwar mit C++ selbst nicht ausreichend gearbeitet, um definitiv sagen zu können, was Fakt ist
aber in anderen Sprachen (Java, C#, Python) muss man den übergeordneten Konstruktor explizit aufrufen
eine andere Frage wäre:
welcher Konstruktor wird aufgerufen?
die abgeleitete Klasse könnte (theoretischerweise) ganz andere Konstruktoren aufweisen, als die Klasse, von der abgeleitet wird
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

rnlf

Frischling

Beiträge: 85

Beruf: Softwareingenieur Raumfahrt

  • Private Nachricht senden

13

19.07.2012, 10:36

Wenn die Basisklasse einen Defaultkonstruktor hat, wird dieser implizit aufgerufen, ansonsten muss ein Konstruktor der Basisklasse explizit in der Initialisiererliste aufgerufen werden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
class Base {
public:
   Base(int) {...} // kein Defaultkonstruktor mehr
};

class Derived: public Base {
public:
    Derived() {} // verboten!
    Derived() : Base(10) {} // so geht's wieder
};

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

14

19.07.2012, 11:17

Zitat

aber in anderen Sprachen (Java, C#, Python) muss man den übergeordneten Konstruktor explizit aufrufen

Unsinn.

In C# ist das definitiv nicht so.
Wenn man nicht explizit angibt, wird automatisch implizit der Konstruktor ohne Parametern aufgerufen.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

19.07.2012, 11:18

Der Konstruktor von CMinenleger ruft implizit den Konstruktor von CRaumschiff auf...

sicher?

Das darfst du dot ruhig glauben, er ist hier derjenige mit der meisten Ahnung von C++.
Implizit wird der parameterlose Konstruktor aufgerufen. Wenn es den nicht gibt oder er nicht zugreifbar ist, muss man selbst den korrekten Konstruktor aufrufen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

19.07.2012, 11:20

Der Konstruktor von CMinenleger ruft implizit den Konstruktor von CRaumschiff auf...

sicher?

Ja ;)

ich abe zwar mit C++ selbst nicht ausreichend gearbeitet, um definitiv sagen zu können, was Fakt ist
aber in anderen Sprachen (Java, C#, Python) muss man den übergeordneten Konstruktor explizit aufrufen

In Python ja, in Java und C# muss man das definitiv nicht. ;)

eine andere Frage wäre:
welcher Konstruktor wird aufgerufen?
die abgeleitete Klasse könnte (theoretischerweise) ganz andere Konstruktoren aufweisen, als die Klasse, von der abgeleitet wird

Wenn der Konstruktor der Basisklasse nicht explizit aufgerufen wird, dann wird der Default Konstruktor verwendet. Wenn kein solcher existiert, gibt's einen Compilerfehler.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

17

19.07.2012, 12:50

ok, es ist anscheinend tatsächlich so, dass der Standardkonstruktor aufgerufen wird
allerdings wurde das hier nich explizit geschrieben, daher vermutlich die Verwirrung meinerseits
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige