Menu
Coddy logo textTech

Podstawy konstruktorów i destruktorów

Część sekcji Programowanie obiektowe ścieżki C++ w Coddy. Lekcja 10 z 104.

Konstruktor to specjalna metoda, która uruchamia się automatycznie podczas tworzenia obiektu. Destruktor uruchamia się, gdy obiekt zostaje zniszczony.

Konstruktor domyślny

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
};

Konstruktor parametryzowany

Book(std::string title, int pages) {
    this->title = title;
    this->pages = pages;
}

Przeciążanie konstruktorów: wiele konstruktorów

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
    
    Book(std::string title) {
        this->title = title;
        this->pages = 0;
    }
    
    Book(std::string title, int pages) {
        this->title = title;
        this->pages = pages;
    }
};

Destruktor: uruchamia się, gdy obiekt zostaje zniszczony

class Book {
public:
    ~Book() {
        std::cout << "Book destroyed" << std::endl;
    }
};

Tworzenie obiektów za pomocą różnych konstruktorów

Book book1;                        // Konstruktor domyślny
Book book2("Harry Potter");         // Jeden parametr
Book book3("1984", 328);            // Dwa parametry

Konstruktory mają taką samą nazwę jak klasa i nie mają typu zwracanego. Destruktory używają ~ClassName() i są wywoływane automatycznie w odwrotnej kolejności tworzenia, gdy obiekty wychodzą poza zakres.

challenge icon

Wyzwanie

Średni

Utwórz klasę Product z trzema przeciążonymi konstruktorami i destruktorem:

  • Konstruktor z 3 parametrami: nazwa, cena, stan magazynowy
  • Konstruktor z 2 parametrami: nazwa, cena (stan magazynowy = 0)
  • Konstruktor domyślny: nazwa = "Unknown", cena = 0, stan magazynowy = 0
  • Destruktor: wypisuje "Destroying: <name>"

Spróbuj swoich sił

#include <iostream>
#include "Product.h"

int main() {
    std::string name;
    int price, stock;
    std::getline(std::cin, name);
    std::cin >> price >> stock;
    
    Product product1(name, price, stock);
    Product product2("Keyboard", 79);
    Product product3;
    
    std::cout << "Product 1: " << product1.getName() << " - $" << product1.getPrice() << " (Stock: " << product1.getStock() << ")" << std::endl;
    std::cout << "Product 2: " << product2.getName() << " - $" << product2.getPrice() << " (Stock: " << product2.getStock() << ")" << std::endl;
    std::cout << "Product 3: " << product3.getName() << " - $" << product3.getPrice() << " (Stock: " << product3.getStock() << ")" << std::endl;
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C++ online