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

[C++] Trochę teorii o operatorach i dziedziczeniu

Ostatnio zmodyfikowano 2014-05-29 12:32
Autor Wiadomość
ArgonZapan
Temat założony przez niniejszego użytkownika
[C++] Trochę teorii o operatorach i dziedziczeniu
» 2014-05-28 22:30:44
Sprawa wygląda tak:
Chair dziedziczy po Furniture
W Chair i Furniture są operatory =

C/C++
Chair & Chair::operator =( Chair & pattern ) {
    if( & pattern != this ) {
        this->Lenght = pattern.Lenght;
        this->Width = pattern.Width;
        this->Height = pattern.Height;
        Furniture::operator =( pattern ); // Chodzi o tą linijkę
    }
    return * this;
}

Czy ten zapis jest poprawny ? Czy istnieją inne zapisy ?
Czy te pattern ma coś wspólnego z rzutowaniem w górę ?
P-111038
DejaVu
» 2014-05-29 10:53:09
Jeżeli działa to jest OK.
pattern
 to zmienna. Jeżeli przechowuje obiekt typu Chair, a Chair dziedziczy po Furniture, to rzutowanie niejawnie w górę jest dozwolone (o ile rzutujesz do referencji lub wskaźnika), ponieważ Chair posiada wszystkie metody które ma Furniture.

Prostszy przykład:
C/C++
Chair krzeslo;
Furniture & mebel = krzeslo; //tu następuje niejawne rzutowanie w górę
mebel.jakasMetodaMebla();
P-111046
pekfos
» 2014-05-29 12:30:58
Operatory = przyjmują referencję na stałą, a nie zwykłą.
P-111054
DejaVu
» 2014-05-29 12:32:46
No tak, ale wywołanie jest poprawne ;p
P-111055
« 1 »
  Strona 1 z 1