Konstruktor to specjalna metoda klasy, która uruchamia się automatycznie podczas tworzenia obiektu. Służy najczęściej do nadania wartości początkowych polom obiektu.
Najważniejsze cechy konstruktora
- ma taką samą nazwę jak klasa,
- nie ma typu zwracanego, nawet
void, - może przyjmować parametry,
- może być przeciążany, czyli klasa może mieć kilka konstruktorów o różnych parametrach,
- jest wywoływany automatycznie przy tworzeniu obiektu.
Deklaracja konstruktora w klasie
class Owoc
{
public:
double waga;
string nazwa;
Owoc(double waga, string nazwa);
};
Wewnątrz klasy podaje się tylko deklarację konstruktora.
Definicja konstruktora poza klasą
Jeżeli konstruktor jest definiowany poza ciałem klasy, należy użyć operatora zakresu :: oraz nazwy klasy:
Owoc::Owoc(double waga, string nazwa)
{
this->waga = waga;
this->nazwa = nazwa;
}
Zapis Owoc::Owoc oznacza: konstruktor Owoc należący do klasy Owoc.
Częsty błąd egzaminacyjny
Niepoprawny jest zapis z inną nazwą klasy, np.:
Construct::Owoc(double waga, string nazwa)
Jeśli klasa nazywa się Owoc, definicja konstruktora poza klasą musi zaczynać się od Owoc::Owoc.
Przykład użycia
Owoc jablko(0.25, "jabłko");
Podczas tworzenia obiektu jablko automatycznie wywoła się konstruktor z dwoma parametrami.