Menu
Coddy logo textTech

יסודות הבנאים וההורסים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C++ של Coddy. שיעור 10 מתוך 104.

בנאי הוא מתודה מיוחדת שרצה אוטומטית כאשר אובייקט נוצר. הורס רץ כאשר האובייקט מושמד.

בנאי ברירת מחדל

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

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

בנאי עם פרמטרים

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

העמסת בנאים: מספר בנאים

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;
    }
};

הורס: פועל כאשר האובייקט מושמד

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

יצירת אובייקטים באמצעות בנאים שונים

Book book1;                        // בנאי ברירת מחדל
Book book2("Harry Potter");         // פרמטר אחד
Book book3("1984", 328);            // שני פרמטרים

לבנאים יש שם זהה לשם המחלקה ואין להם טיפוס החזרה. משמידים משתמשים ב־~ClassName() ונקראים אוטומטית בסדר הפוך לסדר היצירה כאשר אובייקטים יוצאים מתחום החיים שלהם.

challenge icon

אתגר

בינוני

צרו מחלקה בשם Product עם שלושה בנאים מועמסים והורס:

  • בנאי עם 3 פרמטרים: שם, מחיר, מלאי
  • בנאי עם 2 פרמטרים: שם, מחיר (מלאי = 0)
  • בנאי ברירת מחדל: שם = "Unknown", מחיר = 0, מלאי = 0
  • הורס: מדפיס "Destroying: <name>"

נסו בעצמכם

#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 iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C++ אונליין