Zmienne a dziedziczenie w obiektowym C++

Zmienne a dziedziczenie w obiektowym C++
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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:

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

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

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
0

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

DigitalNomad
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tak
  • Postów: 64
0

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

  • Rejestracja: dni
  • Ostatnio: dni
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...

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
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.

Reinicke
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
1
Kopiuj
Bazowa( int a )
        : x( a )
    { } 

zadziała tak jak

Kopiuj
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:

Kopiuj
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.
}; 
  • Rejestracja: dni
  • Ostatnio: dni
0

Dziękuje bardzo za pomoc wszystkim i pozdrawiam :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.