Operator = w dziedziczeniu

0

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
4

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.

0

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ę :)

0

Niech będzie klasa Samochód i klasa pochodna Mercedes. Co będzie jeśli zrobię takie coś:

samochod czarny = mercedes stary

?

5

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1