Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class A{
- int i;
- public:
- A(int _i=0): i(_i){ printf("A%d ", i); }
- ~A(){ printf("~A%d ", i); }
- };
- class B : public A{
- int x;
- A a;
- public:
- B(int _x): A(1), x(_x){}
- ~B(){ printf("~B%d ",x); }
- };
- int zad4(){
- B b(5); // (1)
- std::cout << " *[1]* ";
- A*ptr = new B(3); // (2)
- std::cout << " *[2]* ";
- delete ptr; // (3)
- std::cout << " *[3]* ";
- return 0; // (4)
- }
- /* A1 A0 A1 A0 ~A1 ~B5 ~A0 ~A1
- (1) Konstruktor B(5):
- - Klasa B dzidziczy po A więc najpierw uruchaminy jest konstruktor A
- na liście inicjalizacyjnej jest przekazany parametr 1- wypisuje A1 A1
- - Konstruktor bezparametrowy A w obiektach klasy B - wypisuje A0 A0
- - przypisuje x = 5 - Konstruktor B - nie wyswietla nic
- (2) Tworzymy wskaśnik typu A na obiekt typu B:
- - tworzenie wskaźnika nie wywołuje konstruktora A
- - Konstruktor B(3):
- . na liście inicjalizacyjnej konstruktor A(1) - wypisuje A1 A1
- . Konstruktor bezparametrowy A w obiektachklasy B - wypisuje A0 A0
- . przypisuje x = 5 - Konstruktor B - nie wyswietla nic
- (3) Usuwamy wskaznik typu A:
- - Desturuktor typu A z parametrem 1 nadanym przez B - wypisuje ~A1 ~A1
- (4) Koniec programu:
- - Destruktor B z x=5 - wypisuje B5 ~B5
- - Destruktor A znajdujacego się w obiektach klasy B - wypisuje ~A0 ~A0
- - Destruktor A z listy inicjalizacyjnej klasy B z - wypisuje ~A1 ~A1
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement