Zmienne a dziedziczenie w obiektowym C++

0
class Bazowa
{
    int x;
public:
    Bazowa( int a )
        : x( a )
    { }
};
 

Od niedawna czytam o programowaniu obiektowy, wiem że moje pytanie może i głupie, z pewnością banalne, ale o co chodzi w tym zapisie:

Bazowa( int a )
        : x( a )
    { }
 

Jak by mi ktoś mógł podać definicję i zastosowanie takiego zapisu.
Z góry dziękuje.

0

Lista inicjalizacyjna konstruktora, inicjalizuje zmienną x za pomocą a

0

Taki zapis oznacza inicjalizację prywatnej (przez domniemanie) zmiennej "x" wartością "a" podczas utworzenia klasy.

0

Może coś więcej jak wspomniałem jestem nowy i twoje słowa sprawiły że jeszcze mniej rozumiem :<
Postaraj się, proszę opisać to jak najprościej...

0

Jeżeli dobrze pamiętam to składowe obiektu są inicjalizowane podczas tworzenia obiektu, a nie w momencie kiedy ten obiekt juz jest stworzony i edytujesz wartości składowych. Dobrym przykładem jest jakaś zmienna const, nie można zmienić jej w ciele konstruktora ale w liście inicjalizujacej juz tak.

1
Bazowa( int a )
        : x( a )
    { } 

zadziała tak jak

Bazowa( int a )
{
     x = a; 
} 

Lista inicjalizacyjna na pierwszy rzut oka działa tak samo jak zwykły konstruktor, różnica jest taka,
że można np. użyć jej do inicjalizacji pól const, czy wywołać konstruktor klasy bazowej:

class Bazowa
{
public:
	int pole;

	Bazowa(int p)
	{
		pole = p;
	}
};

class Pochodna : Bazowa
{
public:
	const int stala;

	Pochodna(int p)
	{
		stala = p; // bład, to się nie skompiluje!
	}
};

class InnaPochodna : Bazowa
{
public:
	const int stala;

	InnaPochodna(int p): Bazowa(p), stala(p) {} // Tu już ok.
}; 
0

Dziękuje bardzo za pomoc wszystkim i pozdrawiam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1