Witam,
Piszę dla siebie program w języku C++, aby poznać podstawy programowania obiektowego, nauczyć się C++ i przy okazji programować matematyczne aplikacje. Wybrałem macierze, ponieważ jest to okazja, aby wykorzystać podstawową wiedzę z algebry, przy okazji możliwość dziedziczenia (część funkcji dla podklasy kwadratowa nie będzie działać dla klasy ogólnej).
- Nie rozumiem dlaczego konstruktory klasy potomnej wywołują konstruktor domyślny klasy bazowej.
Czy jest to domyślne zachowanie C++ i trzeba je mieć na uwadze przy projektowaniu klas? A może to błąd w moim kodzie?
Napisałem prosty program by zasymulować problem:
#include<iostream>
using namespace std;
class macierz {
public:
macierz();
};
class kwadratowa : public macierz {
};
macierz::macierz() {
cout << "Wywolano konstruktor domyslny klasy pierwotnej!" << endl;
}
int main(void)
{
kwadratowa a;
return 0;
}
Konstuktor domyślny klasy pierwotnej został wywołany, wydaje mi się więc, że tak powinno być. Mam więc pytanie:
- Czy można sprawić, by klasa potomna nie wywoływała domyślnego konstruktora klasy pierwotnej?
- A może klasy powinny być projektowane zawsze w taki sposób, aby dostosować się do tego zachowania?
Pozdrawiam,