בנייה וקומפילציה של C++
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C++ של Coddy. שיעור 2 מתוך 104.
C++ נבנה בשלושה שלבים: עיבוד מקדים, הידור וקישור.
1. קדם-עיבוד: הנחיות #include נפתרות, ותוכן קובצי הכותרת מועתק לקובצי המקור
#include <iostream> // קובץ כותרת של המערכת
#include "my_file.h" // קובץ כותרת משלך2. קומפילציה: כל קובץ .cpp עובר קומפילציה בנפרד לקובץ אובייקט (.o)
// math_utils.cpp מתקמפל לקובץ math_utils.o
// main.cpp מתקמפל לקובץ main.o3. קישור: קובצי האובייקט משולבים לקובץ ההפעלה הסופי
// math_utils.o + main.o → program.exeקובץ הכותרת מצהיר מה קיים (אבות טיפוס). קובץ .cpp מספק את המימוש בפועל. המקשר מחבר קריאות ב־main.cpp למימושים בקובצי .cpp אחרים.
אתגר
בינוניקובץ הכותרת math_utils.h מצהיר על שתי פונקציות. ממשו אותן ב-math_utils.cpp:
doubleValue(int x): מחזירהx * 2square(int x): מחזירהx * x
הקפידו לכלול את קובץ הכותרת בקובץ ה-.cpp שלכם.
נסו בעצמכם
#include <iostream>
#include "math_utils.h"
int main() {
int num;
std::cin >> num;
std::cout << "Double: " << doubleValue(num) << std::endl;
std::cout << "Square: " << square(num) << std::endl;
std::cout << "Build successful" << std::endl;
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות OOP
קבצים חיצונייםבנייה וקומפילציה של C++קובצי Header וקובצי מקורמרחבי שמות והיקףמבוא ל-OOP ב-C++מחלקות לעומת אובייקטיםמצביע thisמתודות (פונקציות איבר)תכונות (חברי נתונים)יסודות הבנאים וההורסיםסיכום – מחשבון פשוט4מאפייני מחלקה
חברי מופע לעומת חברים סטטייםגטרים וסטריםפונקציות איבר קבועותמילת המפתח mutableמתודות ומשתנים סטטייםפונקציות ומחלקות ידידותסיכום – מנהל חשבונות בנק7ירושה
ירושה בסיסיתרמות גישה בירושהסדר הקריאות לבנאי ולמפרקדריסת מתודותפונקציות וירטואליות ו־VTableירושה מרובהירושה וירטואליתסיכום – היררכיית עובדים2ניהול זיכרון
זיכרון Stack לעומת Heapמצביעים והפניותזיכרון דינמי (new/delete)מצביעים חכמים ב-C++RAII ב-C++סיכום – מנהל מערכים דינמיים5כימוס
מצייני גישה ב-C++מצייני גישה לעומקהסתרת מידעמבנה לעומת מחלקהמחלקות מקוננות ופנימיותסיכום – מערכת רשומות תלמידים8רב־צורתיות
רב־צורתיות בזמן קומפילציה לעומת בזמן ריצההעמסת פונקציותפונקציות וירטואליות — מבט נוסףפונקציות וירטואליות טהורותמחלקות מופשטותתכנון ממשקים ב־C++המרה דינמית ו־RTTIסיכום — מחשבון צורות3בנאים והורסים
בנאי ברירת מחדלבנאי עם פרמטריםבנאי העתקהבנאי העברהרשימות אתחול בבנאיםבנאים מאציליםמעמיקים בנושא הורסיםכלל השלושה / החמישה / האפססיכום – מחלקת String6העמסת אופרטורים
מבוא להעמסת אופרטוריםהעמסת אופרטורים אריתמטייםהעמסת אופרטורי השוואהאופרטורי זרםהעמסת אופרטור השמההעמסת האופרטורים [] ו־()אופרטורים להמרת טיפוסיםסיכום – מחלקת Matrix9תבניות
תבניות פונקציהתבניות מחלקההתמחות תבניותתבניות ארגומנטים משתנותיסודות SFINAE ותכונות טיפוסיםסיכום – מכל גנריתרגלו בעצמכם: קומפיילר C++ אונליין