פתרון משימה 9 -
הפונקציה Read במחלקה Employee
 
כעת בואו נתבונן בפונקצית ה-Read במחלקת Employee, הקוראת את רשומת העובד:

void Employee::Read(int number)
{
 in = new ifstream("employee.dat",
                    ios::in|ios::binary);
 if (in->bad())
 {
  delete in;
  throw CantOpenFile();
 }

 int i;
 for (i=0; i<locationCount; i++)
 {
  if (locationList[i].number == number)
   break;
 }
 if (i == locationCount)
  throw NoSuch();

 in->seekg(locationList[i].location,
                             ios::beg);
 Read();
 in->close();
 delete in;
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

class Employee {
 /* same definition of class Employee... */
public:
 void Read(int number);
 /* member functions... */
protected:
 void Read();
 /* member functions... */
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

הפונקציה הראשונה היא זו שכבר ראינו, המקבלת מספר עובד וקוראת את הרשומה המתאימה לו מהקובץ.