Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Dziedziczenie - co oznacza zapis A::A( int c ): B( c, c ) {}

Ostatnio zmodyfikowano 2013-07-07 15:20
Autor Wiadomość
ravv1
Temat założony przez niniejszego użytkownika
[C++] Dziedziczenie - co oznacza zapis A::A( int c ): B( c, c ) {}
» 2013-07-06 18:44:19
Witam. Otóż ucząć się c++ natrafiłem na przypadek którego nie rozumiem. Co oznacza zapis (dokładnie przepisuje):

C/C++
Square::Square( int length )
    : Rectangle( length, width )
{ }

Rozumiem, że square i rectangle pobierają określone parametry. Ale nie rozumiem całego zapisu. To jakiś konstruktor?

P-87159
killjoy
» 2013-07-06 18:52:37
Jest to konstruktor klasy bazowej wywołany w liście inicjalizacyjnej konstruktora klasy pochodznej: http://pl.wikipedia.org/wiki​/Lista_inicjalizacyjna_konstruktora
P-87160
DejaVu
» 2013-07-06 19:43:14
Kasa Square dziedziczy po klasie Rectangle. Klasa Rectangle posiada konstruktor z argumentami, który trzeba wywołać w trakcie tworzenia obiektu. Skoro klasa Square dziedziczy po klasie Rectangle to trzeba zagwarantować, że konstruktor klasy bazowej (tj. klasy Rectangle) zostanie wywołany. Zapis, który widzisz właśnie to zapewnia tj. w chwili powstawania obiektu Square wywołuje konstruktor Rectangle z określonymi wartościami. Konstruktora nie da się wywołać wewnątrz bloku {}, więc trzeba użyć listy inicjalizacyjnej, która zaczyna się od dwukropka i występuje przed rozpoczęciem bloku {}.

/edit:
W każdym razie kod, który przytoczyłeś jest niepoprawny. Jak już to powinien on wyglądać tak:
C/C++
Square::Square( int length )
    : Rectangle( length, length )
{ }
P-87162
ravv1
Temat założony przez niniejszego użytkownika
» 2013-07-07 15:20:52
Kod przepisałem prosto z książki. Dziękuję, już rozumiem.
P-87199
« 1 »
  Strona 1 z 1