מרחבי שמות והיקף
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C++ של Coddy. שיעור 4 מתוך 104.
מרחבי שמות מקבצים קוד קשור יחד ומונעים התנגשויות בשמות. אופרטור פתרון התחום :: ניגש לפריטים בתוך מרחב שמות.
יצירת מרחב שמות
namespace MathTools {
int add(int a, int b) {
return a + b;
}
}גישה באמצעות רזולוציית תחום ::
int result = MathTools::add(5, 3); // result = 8שימוש בהנחיית using כדי להימנע מהקלדת מרחב השמות בכל פעם
using namespace MathTools;
int result = add(5, 3); // זהה ל-MathTools::add(5, 3)מרחב השמות std
std::cout << "Hello" << std::endl;
// או
using namespace std;
cout << "Hello" << endl;מרחבי שמות מארגנים קוד ומונעים התנגשויות בין שמות. מרחב השמות std מכיל את כל התכונות של ספריית התקן של C++, כמו cout, cin, string ו-endl.
אתגר
בינוניצרו פונקציות בתוך מרחב השמות MathTools:
add(int a, int b): מחזירה את הסכוםmultiply(int a, int b): מחזירה את המכפלה
הצהירו עליהן ב־MathTools.h וממשו אותן ב־MathTools.cpp.
נסו בעצמכם
#include <iostream>
#include "MathTools.h"
int main() {
int a, b;
std::cin >> a >> b;
std::cout << "Add: " << MathTools::add(a, b) << std::endl;
std::cout << "Multiply: " << MathTools::multiply(a, b) << 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++ אונליין