Błąd podczas kompilacji kodu, przymusowe dodanie konstrukotra domyślnego

0

Ktoś może mi wytłumaczyć dlaczego w poniższym kodzie muszę zastosować konstruktor domyślny w klasie A?

class A 
{
public: 
	A() { y = 0; }
	A(int x) { y = x; }
protected: 
	int y;
};
class B 
	:public A 
{
public: 
	B(int x) { y = x; }
};

Gdy go usunę w linijce:

B(int x) { y = x; }

wyświetla się błąd.

dodanie znacznika <code class="cpp"> - furious programming

0

Bo konstruktor w klasie, która dziedziczy wywołuje implicit konstruktor w klasie bazowej

0

A dlaczego wywołuje konstruktor domyślny z klasy A?
Tworzy jakiś obiekt pomocniczy?

0

Nie.
Wywołuje go na rzecz obiektu klasy B.

2

Bo źle to napisałeś! A gdyby klasa A miała 100 pól to też być ich ustawianie skopiował do klasy B? o_O

class B 
    :public A 
{
public: 
    B(int x):A(x) {}
};
0

Nie ja to pisałem. To jest zadanie z egzaminu, które muszę poprawić, aby program się skompilował.
Teraz wszystko działa, dzięki. :)

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