Wiem, że operatora = nie można dziedziczyć, ale co to oznacza ? Jeśli mam klasę samochód i klasę pochodną koło. To mam rozumieć, że nie mogę obiektu koło przypisać do obiektu samochód ?:
kolo czarne = samochod honda
Wiem, że operatora = nie można dziedziczyć, ale co to oznacza ? Jeśli mam klasę samochód i klasę pochodną koło. To mam rozumieć, że nie mogę obiektu koło przypisać do obiektu samochód ?:
kolo czarne = samochod honda
Jeśli mam klasę samochód i klasę pochodną koło.
Jeżeli naprawdę tak masz to nie miej. ;-) Koło nie jest samochodem. Samochód składa się za to z koła - użyj kompozycji.
Co do pytania. Operator przypisania jest dziedziczony, ale jest przykrywany przez operator przypisania klasy pochodnej. Można go "okdryć" za pomocą using
.
Czemu sądzisz że koło jest samochodem?
Bardziej sensownie będzie jeżeli samochód będzie zawierał koło.
Dziedziczenie lepiej zrobić np. samochód który dziedziczy po klasie pojazd. Wtedy łatwiej to zrozumiesz na logikę :)
Niech będzie klasa Samochód i klasa pochodna Mercedes. Co będzie jeśli zrobię takie coś:
samochod czarny = mercedes stary
?
To co teraz napisałeś to object slicing: do obiektu klasy bazowej zostanie przypisany obiekt klasy bazowej znajdujący się w obiekcie klasy pochodnej. Dodatkowe informacje z obiektu klasy pochodnej zostaną utracone.
http://en.wikipedia.org/wiki/Object_slicing
Uprzedzając pytanie: przypisanie w drugą stronę, tzn. obiektPochodnej = obiektBazowej;
się nie uda w ogóle. Co przy takim przypisaniu miało by się stać z dodatkowymi składnikami w klasie pochodnej? Oczywiście można sobie ten operator z klasy pochodnej okdryć za pomocą using
albo napisać swój, który zrobi co potrzeba.