Ich lerne C++ und stieß auf diesen Code, bei dem der Konstruktor initialisiert wird, ohne Membervariablen zu deklarieren. Außerdem wird das Objekt ohne Parameter erstellt. Wird stattdessen ein Standardkonstruktor aufgerufen?Klassenobjekt wird initialisiert, ohne Membervariablen zu definieren
Wird die abgeleitete Klasse auch Zugriff auf x und y haben, wenn diese Klasse geerbt wird?
// Beispielprogramm
#include <iostream>
#include <string>
class game
{
public:
game(int x = 0, int y = 100); // Do they get defined as members?
int z;
};
game::game(int x, int y) : z(x)
{
std::cout << x;
}
int main()
{
game g; // passed w/o parameters.
return 0;
}
Sie Zugriff auf x und y durch eine Basisklassenkonstruktor von der abgeleiteten Klasse aufgerufen haben könnte. –
Da Sie allen Argumenten des Konstruktors Standardargumente zuweisen, wird er zum Standardkonstruktor, da er ohne Angabe von Argumenten aufgerufen werden kann. –
Wie bei jeder Funktion verhält sich das Argument wie eine lokale Variable und wird nicht mehr angezeigt, wenn die Funktion zurückgegeben wird. Das gilt auch für Konstrukteure. Weder Konstruktorargumente noch lokale Konstruktorvariablen werden zu Membervariablen der Klasse. –