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

Dziedziczenie struktury

Ostatnio zmodyfikowano 2017-01-18 21:28
Autor Wiadomość
Lich555
Temat założony przez niniejszego użytkownika
Dziedziczenie struktury
» 2017-01-18 20:52:08
Witam.
Z tego co wiem, to przy dziedziczeniu struktury domyślnie jej składniki są public.
C/C++
struct samochod { int zbiornik; };
//*******************************
class VW
    : public samochod
{ }; //bez public wywala mi blad
//*******************************
void stacja_benzynowa( samochod & klient )
{ klient.zbiornik = 50; }
//*******************************
int main()
{
    samochod prawdziwy_samochod;
    stacja_benzynowa( prawdziwy_samochod );
    cout << prawdziwy_samochod.zbiornik << endl;
   
    VW golf;
    stacja_benzynowa( golf ); //tu blad, ze niedostepne
    cout << golf.zbiornik << endl; //tu blad, ze niedostepne
   
    return 0;
}

Czemu tak się dzieje? To nie jest tak, że
C/C++
class VW
    : samochod
{ };
 tutaj wszystkie skladniki sa public?
P-156611
Lora
» 2017-01-18 20:54:44
Napisz jaki błąd.
P-156612
michal11
» 2017-01-18 21:12:01
Domyślnie dziedziczenie jest private, czyli to
C/C++
class VW
    : samochod
{ };

jest równoznaczne z tym:
C/C++
class VW
    : private samochod
{ };

a dziedziczenie prywatne działa tak, że base klasę traktuje jako składnik prywatny, czyli w twoim przykładzie klasa VW w ogólnie nie jest traktowana jako samochód tylko jakby zwierała w sobie samochód, dlatego na przykład nie można jej przypisać do referencji na samochod ponieważ nie dziedziczy po niej publicznie.
P-156619
Lich555
Temat założony przez niniejszego użytkownika
» 2017-01-18 21:13:27
C/C++
stacja_benzynowa( golf ); - 'samochod' is an inaccessible base of 'VW'
struct samochod { int zbiornik; }; - 'int samochod::zbiornik' is an inaccessible
cout << golf.zbiornik << endl; - within this context
P-156620
Lich555
Temat założony przez niniejszego użytkownika
» 2017-01-18 21:14:59
@michal11
Nawet gdy dziedziczymy strukturę? Wydawało mi się (i trafiłem gdzieś w necie na taką info.), że domyślne dziedziczenie przy strukturze jest public.

@Edit
Eh, przepraszam za 2 posty.
P-156621
michal11
» 2017-01-18 21:17:40
Nigdy się z tym nie spotkałem, być może tak jest jeżeli tworzymy nową strukturę a nie klasę. Może pomyliło ci się z tym, że domyślnie wszystkie pola w strukturze są publiczne?
P-156622
Lich555
Temat założony przez niniejszego użytkownika
» 2017-01-18 21:19:45
P-156623
Monika90
» 2017-01-18 21:22:30
Jeżeli definiowana struktura dziedziczy z czegoś (nieważne z klasy czy struktury) to domyślnie jest to dziedziczenie publiczne, jeżeli klasa z czegoś dziedziczy to jest prywatne.
P-156624
« 1 » 2
  Strona 1 z 2 Następna strona