109

109



}


};

class NiePochodna

{

private:

int m_i; float m_f1; float m_f2; public:

NiePochodnaO : m_i(0), m_f1 (O.Of), m_f2(0.555f)

{

}

};

void TestABC(void)

{

printf("Rozmiar klasy pochodnej = %d\n", sizeof(Pochodna)); printf("Rozmiar klasy, niebędącej klasą pochodną = %d\n", sizeof(NiePochodna)

);

}

Zauważmy, że informacja o dziedziczeniu zajmuje cztery bajty na instancję klasy. W podanym kodzie źródłowym klasa Pochodna zajmuje 20 bajtów, podczas gdy klasa NiePochodna zajmuje 12 bajtów. Różnica jest spowodowana tym, że klasa Pochodna dziedziczy po dwóch klasach.

Przykład: klasa Derived w pliku inherit2.h

Wielodziedziczenie po abstrakcyjnych klasach podstawowych nie powoduje niejednoznaczności

kompilowanie kodu

Kod źródłowy

class Interfejsl

{

public:

virtual void Drukujlnt(void) = 0;

};

class Interfejs2

{


Wyszukiwarka

Podobne podstrony:
19 p07 #include <stdio.h> class próba{ private: int *pi_Dane; public: próba(); -próba()
19 p08 #include <stdio.h> class próba { private: int *pi_Dane; public: próba(); -próba()
Po class Uwaga { private: int m_nLicznik; public: Uwaga(void) : m_nLicznik(1){} void UstawLicznik(in
class Punkt{ private int x, y; public void Przesuń(int dx, int dy){ x += dx; y += dy;} public Punkt(
Język C++ - praktyczne wskazówki Po class Napis { private: const int m_cchTest; int m_cch; char
KlasyPo class Napis { private: const int m_cchTest; public: Napis(void) : m_cchTest(10){}}; Zgodnie
~Napis(void){ if(m_pch) delete m_pch;} }; Po class Napis{ private: const int m_cchTest; int
Po class Napis{ private: const int m_cchTest; int m_cch; char *m_pch; void lnicjNapis(const cha
56224 pp1 (3) ĆWICZENI* I.    Deklaracje: int i; float f; int *p; int tab
DSC00393 (17) Rozpatrzmy przykład: i lit * wił, i Wi2; //def. wskaźników na obiekty int float * wf;

więcej podobnych podstron