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

Pytanie dotyczące dziedziczenia.

Ostatnio zmodyfikowano 2013-04-05 19:58
Autor Wiadomość
Rafi
Temat założony przez niniejszego użytkownika
Pytanie dotyczące dziedziczenia.
» 2013-04-03 18:53:53
Witam !

Przerabiając kurs ze strony http://kurs-c-plus-plus.cba.pl zatrzymałem się na lekcji dotyczącej dziedziczenia (ten kurs już przerobiłem, utrwalam wiedzę w innych). Otóż nie do końca kumam dziedziczenie - tj. na chwilę obecną prosiłbym o wytłumaczenie dwóch rzeczy:
1.
C/C++
class figura
{
protected:
    double podstawa, wysokosc;
public:
    void przypisz( double a, double h )
    {
        podstawa = a;
        wysokosc = h;
    }
};

class kwadrat
    : public figura

Dlaczego przy deklaracji klasy "kwadrat" użyto
public
? Wiem, że to się odnosi do samego dziedziczenia ale po co to public?
Skoro przy dziedziczeniu metod zwracających jakąś wartość nie jest napisane
public
? Przykład(to tylko fragment):
C/C++
class trzecia
{
public:
    int metoda3( int a, int b )
    {
        return a / b;
    }
};

class zbiorcza
    : pierwsza
    , druga
    , trzecia
{
public:
    void metoda_all()
    {
        cout << metoda1( 5, 4 ) << endl;
        cout << metoda2( 4, 1 ) << endl;
        cout << metoda3( 15, 3 ) << endl;
    }
};
Kolejne pytanie odnosi się również do powyższego kodu: w jaki sposób wartości zmiennych z klasy
class zbiorcza
 przenoszą się do poszczególnych klas?

Możliwe że wyszło kapkę chaotycznie, ale może zrozumiecie :)
z góry dzięki:)
P-79860
Monika90
» 2013-04-03 19:05:19
W C++ dziedziczenie może być publiczne lub prywatne (lub chronione). Zatem
C/C++
class Derived
    : public Base
{ };
znaczy, że Derived dziedziczy publicznie z Base, a:
C/C++
class Derived
    : private Base
{ };
znaczy, że Derived dziedziczy prywatnie z Base, a jak nic nie napiszesz:
C/C++
class Derived
    : Base
{ };
to tak jakbyś napisał private, czyli to też jest dziedziczenie prywatne (w przypadku struktur jest inaczej).

Dziedziczenie publiczne służy do tworzenia podtypów, prywatne, na ogół, do współdzielenia implementacji.
P-79861
pekfos
» 2013-04-03 19:12:50
To musiał być na prawdę cienki kurs, skoro masz takie wątpliwości ;)

Dlaczego przy deklaracji klasy "kwadrat" użyto
public
? Wiem, że to się odnosi do samego dziedziczenia ale po co to public?
Skoro przy dziedziczeniu metod zwracających jakąś wartość nie jest napisane
public
public
 oznacza dziedziczenie publiczne, a brak oznacza dziedziczenie prywatne.

Kolejne pytanie odnosi się również do powyższego kodu: w jaki sposób wartości zmiennych z klasy
class zbiorcza
 przenoszą się do poszczególnych klas?
Jakich zmiennych? Masz na myśli stałe, podane przy wywołaniach metod? Pytanie, co najmniej, bardzo dziwne (chyba, że obchodzi cię budowa wewnętrzna i działanie gotowego programu)
P-79863
Rafi
Temat założony przez niniejszego użytkownika
» 2013-04-03 19:21:48
OK, rozumiem, chociaż
współdzielenia implementacji
 to średnio, ale wierzę że kiedyś będę wiedział o co chodzi :)

I (nie chcę tworzyć nowego tematu) czy mogę zadeklarować klasy dziedziczone na początku i użyć ich po funkcji main?

@pekfos może nawet nie taki cienki, ale faktycznie - dziedziczenie było marnie rozwinięte. Pro po zmiennych już się domyśliłem :) Ogólnie chyba potrafię użyć dziedziczenia, ale w sposób taki, iż wiem co podstawić i może zadziała. A chcę zrozumieć samo działanie :D
P-79865
Monika90
» 2013-04-03 19:51:38
To musiał być naprawdę cienki kurs, skoro masz takie wątpliwości ;)
Trzeba przyznać, że ten kurs jest wyjątkowo słabej jakości.
P-79867
Rafi
Temat założony przez niniejszego użytkownika
» 2013-04-04 15:40:10
Hmm... więc jaki byłby odpowiedni na utrwalenie wiedzy z kursy z tej strony? Może ten http://www.bt4.pl/kursy/cpp/programowanie-cpp/? Od razu mówię - kurs z tej strony jest bardzo fajny, ale lubię uzupełniać wiedzę w innych źródłach :). Może znacie jakieś godne polecenia?
P-79923
kubek3898
» 2013-04-05 19:58:41
Jeśli interesuje Cię pozyskiwanie wiedzy z książek, a nie tylko z kursów to polecam "Symfonia C++ Standard". Tam masz dobrze wytumaczony materiał o klasach włączając dziedziczenie :).
P-80008
« 1 »
  Strona 1 z 1