C++ - wielodziedziczenie
------------------------

1. Kompilacja: wywolaj program `make'
2. Uzytkowanie: uruchamianie programow
3. Pliki:

  lista.h, lista.cpp
	Definicja klasy Lista.

# szulista.h, szulista.cpp [ dodano `virtual' do specyfikacji dziedziczenia ]
        Definicja klasy SzuLista.

! trwlista.h, trwlista.cpp
        Definicja klasy TrwLista, ktora zawiera operacje odczytania danych
	z otwartego strumienia i dolaczenia ich na poczatku listy, oraz
	operacje zapisania do otwartego strumienia calej listy.

! toglista.h, toglista.cpp
        Definicja klasy TogLista, ktora dziedziczy od klas SzuLista i TrwLista,
	oraz zawiera dodatkowo operacje usuwania z listy tych danych, ktore 
	wystepuja w otwartym strumieniu.

# intdiff.cpp [ zastosowano klase TogLista ]
	Program, ktory ma dwa argumenty bedace nazwami plikow.  Wypisuje te
	liczby, ktore znajduja sie w pierwszym pliku i nie znajduja sie 
	w drugim pliku.

4. Wazne rzeczy:

a) podklasy wirtualne
  Jesli w grafie dziedziczenia dla klasy A pewna klasa B wystepuje
  wiele razy, to tez tyle bedzie w obiekcie klasy A podobiektow klasy B.
  Aby tego uniknac definiuje sie dziedziczenie jako wirtulane (slowko 
  virtual w deklaracji nadklas dla danej klasy).  
  
  Jesli w grafie dziedziczenia dla klasy A pewna klasa B wystepuje n razy 
  ze slowem virtual i m razy bez tego slowa, to w obiekcie klasy A bedzie m+1
  podobiektow klasy B.
b) konstruktory podklas wirtualnych.
  W konstruktorze klasy A, ktora posrednio lub bezposrednio dziedziczy 
  od klasy B wirtualnie, wywolywany jest konstruktor klasy B.  Jesli go nie 
  wyspecyfikujemy w programie to zostanie wywolany konstruktor bezargumentowy.

  Deklaracje jaki konstruktor powinien zostac wywolany dla klasy B wystepujace
  w klasach bezposrednio dziedziczacych od klasy B (innych niz klasa A) nie
  sa brane w takiej sytuacji pod uwage.
c) nowe konstrukcje w Makefile, $< i $@.
   
5. Legenda:

! - nowy plik;
# - zmodyfikowano plik; opis modyfikacji znajduje sie za nazwami plikow.

