ilosc parametrow konstruktora klasy pochodnej

0

Czy klasa pochodna musi mieć konstruktor z argumentami, jeśli klasa bazowa ma konstruktor z argumentami?

0

Nie, nie musi.

Przyklad:

class dupa
{
    protected:
         int rozmiar;
    public:
        dupa(int r=0) : rozmiar(r) {}
        ~dupa() {}
};

class gosc : public dupa
{
    public:
        gosc() {}
        ~gosc() {}
};
0

Kurcze nie dopisalem.

Jak nie chcesz miec domyslnego parametru konstrujktora w tym przykladzie to dajesz wywolanie konstruktora klasy dupa na liscie inicjalizacyjnej klasy gosc, czyli tak:

class dupa
{
    protected:
         int rozmiar;
    public:
        dupa(int r) : rozmiar(r) {}
        ~dupa() {}
};

class gosc : public dupa
{
    public:
        gosc() : dupa(2) {}
        ~gosc() {}
};

Jak nie wywolasz konstruktora to kompilator zwroci Ci blad.

0

a co z dziedziczeniem wielobazowym? tak samo? czy gdy konstruktor którejś klasy bazowej ma argumenty, to i konstruktor klasy pochodnej musi mieć argumenty? rozumiem, że w dziedziczeniu po wszystkich klasach bazowych, tryby dziedziczenia mogą być różne?

0
szewciu napisał(a)

a co z dziedziczeniem wielobazowym? tak samo? czy gdy konstruktor którejś klasy bazowej ma argumenty, to i konstruktor klasy pochodnej musi mieć argumenty? rozumiem, że w dziedziczeniu po wszystkich klasach bazowych, tryby dziedziczenia mogą być różne?

Chodzi o to zeby wywolac na liscie inicjalizacyjnej konstruktory klas bazowych jesli przyjmuja parametry, a klasa pochodna moze miec wtedy dowolny konstruktor:

class dupa
{
    protected:
         int rozmiar;
    public:
        dupa(int r) : rozmiar(r) {}
        ~dupa() {}
};

class brzuch
{
    protected:
	   int bo;
	public:
	   	brzuch(int r) : bo(r) {}
};

class gosc : private dupa, private brzuch
{
    public:
        gosc() : dupa(2), brzuch(2) {}
        ~gosc() {}
};
0

Rozumiem, dziękuję za sprecyzowanie odpowiedzi na mój problem.

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