[ Fidelito_Castro @ 26.04.2008. 02:16 ] @
Molio bih vas za pomoc!Nasledjivanje klasa nikako ne uspevam da razumem.
A evo i mojih pitanja(odnose se na kod ispod):

1)Zasto prilikom definicije konstruktora klase C ne pozivam i konstruktor za klasu A, nego samo za klasu B?
2)Zar klasa C ne nasledjuje indirektno i podatke clanove klase A?
3)Ako nasledjuje pa kako cu te vrednosti da inicijalizujem,kada ne pozivam konstruktora klase A?
4)Isto se sve to odnosi i za konstruktor kopije? (pitanje 1,pitanje 3)?

Unapred zahvalan, i svako dobro!

Code:


// Nasledjivanje klasa
#include <iostream>


using namespace std;

//Definicija klase A
class A
{
    private:
        int broj;
    protected:
        int size;
    public:
        A(int,int);
};
//Definicija konstruktora - klasa A
A::A(int br, int vel): broj(br),size(vel)
{
}

//Javno nasledjivanje klase A
//definicja klase B
class B : public A
{
    private:
        double brzina;
    protected:
        int delovi;
    public:
        B(double, int);
};
//definicija konstruktora-klasa B
B::B(double speed, int parts): A(speed + 1,parts +1),brzina(speed),delovi(parts)
{
}
//Javno nasledjivanje klase B
//definicija klase C
class C:public B
{
    private:
        double stranica;
    public:
        C(double);
};
C::C(double length):B(length+1,length),stranica(length)
{
}
//Funkcija MAIN
int main()
{


    system("PAUSE");
    return EXIT_SUCCESS;
}
[ karas @ 26.04.2008. 09:57 ] @
Konstruktor klase C poziva konstruktor klase B, a kako B nasleđuje A onda će se automatski pozvati konstruktor klase A. To se odnosi i na default konstruktore i na copy konstruktore.
Koliko vidim, ovde nisu definisani ni default ni copy konstruktor ali u ovom slučaju ne bi trebalo da bude problema sa onima koje je generisao kompajler.
[ Fidelito_Castro @ 27.04.2008. 22:17 ] @
Znaci to se odigrava.To sam i pretpostavljao ali nisam bio siguran.
Hvala!
[ karas @ 28.04.2008. 11:53 ] @
Da, isto se događa i kod destruktora ali u obrnutom redosledu: konstruktori se pozivaju prvo od roditeljskih klasa a destruktori prvo od nasleđenih klasa.