דף הבית שיעורים מחלקות בנאים
 
בנאים
 
הנושא הבא הקשור בתכנות מונחה עצמים, הוא בנאים (constructors), חלק שימושי מאד בשפה. נתבונן שוב במחלקת ה-Date אותה הגדרנו קודם, בתוספת מספר פונקציות חבר:

class Date {
public:
 int day;
 int month;
 int year;
 Date();
 long GetJulian();
 void AddDays(int days);
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

ניתן לראות כי הפונקציה Date שונה מהפונקציות האחרות. זהו סוג מיוחד של פונקציה הנקרא בנאי, והוא משמש בעיקר לאתחול משתני המחלקה.
שני פרטים חשובים לגבי הכרזת פונקצית בנאי: ראשית, שם פונקצית הבנאי צריך להיות זהה לחלוטין לשם המחלקה. שנית, לא מצוין ערך מוחזר לפונקצית בנאי.
הסיבה שלא רשמנו void כערך מוחזר בהכרזת הבנאי, היא שלבנאי יש בכל זאת ערך מוחזר - האובייקט הנוצר. הערך המוחזר של הבנאי אינו מצוין מכיוון שהערך המוחזר זהה לשם פונקצית הבנאי (והמחלקה) - במקרה זה הפעלת הבנאי Date תחזיר אובייקט מסוג Date.
לפנינו דוגמא אפשרית לפונקצית בנאי עבור המחלקה Date:

Date::Date()
{
 day = 1;
 month = 1;
 year = 1990;
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

בדוגמא זו, הבנאי משים את התאריך ל- 1.1.1990, כלומר, מאתחל את משתני המחלקה.
כעת נבדוק כיצד קוראים לבנאי. כזכור משיעורים קודמים, אובייקט מסוג Date יוצרים בצורה הבאה:

Date a;
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

אך מתי קוראים לבנאי? ובכן התשובה היא שהבנאי כבר נקרא בעת יצירת האובייקט. פעולה של הגדרת משתנה מסוג של מחלקה מסוימת מפעילה את הבנאי אוטומטית.
העובדה שבנאים נקראים אוטומטית חשובה, מכיוון שבצורה זו ניתן לדעת שלא קיימת אפשרות לשכוח לקרוא לבנאי, ולכן אובייקטים יאותחלו תמיד כראוי.