Opisanie działania programu.

Odpowiedz Nowy wątek
2011-08-31 15:28
0

Czy jest ktoś w stanie dopisać/skorygować działanie pewnego programu? Mianowicie chodzi o taki program:

class Pierwsza
{
      int x, y;
      public;
      Pierwsza(int a, int b)
      {
                   x=a;
                   y=b;
                   }
                   void f(void)
                   {
                        cout<<"f z Pierwszej\nx="<<x<<" y="<<y<<y"\n";
                        }
                        };
 
class Druga: public Pierwsza
{
      int x,y;
      public:
             Druga(void):Pierwsza(2,4){x=3; y=5;}
             Druga(int a, int b):Pierwsza(a,b) {x=a; y=b;}
             void f(void)
             {
                  cout<<"f z Drugiej\nx="<<x<<" y="<<y<<"\n"
                  }
                  };
 
int main()
{
    Pierwsza p (3,2)
    Druga d;
    p.f();
    d.f();
    ((Pierwsza)d).f();
    p=d;
    d.f();
    return 0;
}
 

Chodzi o to aby opisać dokładnie co robi dana funkcja i jak działa cały program. Moja wersja jest taka, że w funkcji main tworzymy obiekt p klasy Pierwsza. Wywoływany jest konstruktor, czyli funkcja Pierwsza(int a, int b) w klasie Pierwsza. Konstruktor zapisuje pierwszy podany parametr (w naszym wypadku cyfrę 3) do pola x, a drugi (cyfrę 2) do pola y. Następnie w funkcji main tworzymy obiekt d klasy Druga. W obiekcie p wywołujemy metodę f, która wypisze nam na ekran: f z Pierwszej x=3 y=2 Natomiast jak zadziała metoda f na obiekcie d nie mam pojęcia. Na moje oko powinna wypisać: f z Drugiej x=3 y=5 Natomiast wywołanie ((Pierwsza) d).f() powinno wykonać rzutowanie obiektu d, który jest klasy Druga, na klasę Pierwsza. Konstruktor był wywołany niejawnie, bez parametrów, więc przy rzutowaniu powinien wysłać do klasy Pierwsza wartości 2,4 i w wyniku powinno być: f z Pierwszej x=2 y=4
Jak zadziała p=d już w ogóle nie jestem w stanie sobie wyobrazić. Ostatnie wywołanie d.f() powinno wypisać to co pierwsze? Czy jest to dobry opis czy może się mylę?

edytowany 1x, ostatnio: madmike, 2011-09-03 15:54

Pozostało 580 znaków

2011-08-31 15:57
1

tak

Pozostało 580 znaków

2011-09-03 14:28
0

A jak zadziała p=d? Jest ktoś w stanie mi napisać?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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