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.