Operator = w dziedziczeniu

Operator = w dziedziczeniu
N3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 420
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 ?:

Kopiuj
kolo czarne = samochod honda
Endrju
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zellus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 474
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ę :)

N3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 420
0

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

Kopiuj
samochod czarny = mercedes stary

?

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.