الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أتمنى منكم شرح هذا الكود بالتفصيل

مغلق
بدأه المشتاقة للرحمن في 3 نوفمبر 2007 · 3 رد · 972 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته:

أتمنى منكم شرح هذا الكود بالتفصيل

 class Employee {

 public:
 	Employee(const char *, const char * );  
 	~Employee();					   
 	const char *getFirstName() const; 
 	const char *getLastName() const;

 	static int getCount(); 

 private:
   char *firstName;
   char *lastName;

 	static int count;  

};


Employee::count = 0;				   

int Employee::getCount()							   
{ return count; }

Employee::Employee( const char *first, const char *last ){
	firstName = new char[strlen(first)+1 ];
	strcpy( firstName, first );
	lastName = new char[strlen(last) + 1 ];  
	strcpy( lastName, last );
	++count;  
}	 

Employee::~Employee(){
	delete [] firstName; 
	delete [] lastName; 
	--count; 
}
int main()
{
	  cout << "Number of employees before instantiation is "
		   << Employee::getCount() << endl;   // use class name

	   Employee *e1Ptr = new Employee( "Susan", "Baker" ); 
	   Employee *e2Ptr = new Employee( "Robert", "Jones" );

	   cout << "Number of employees after instantiation is "
			<< e1Ptr-> getCount();

		  delete e1Ptr;  // recapture memory						
	  e1Ptr = 0;	 // disconnect pointer from free-store space
	  delete e2Ptr;  // recapture memory						
	  e2Ptr = 0;	 // disconnect pointer from free-store space

	   cout << "Number of employees after deletion is "
			<< Employee::getCount() << endl;

	   return 0;
 }

و جزاكم الله خيرا

#2

أرجججججوكم ساعدوني

#3

class Employee { هكذا تصرح الكلاسات

public: هنا كل الدوال والمتغيرات تصبح ممكنه الاستخدام من خارج الكلاس

Employee(const char *, const char * ); هذا التعريف يستخدم في السي مثل حدث لودفريم في البيسك اي تنفذ الدالة من وقت تنفيذ الكلاس طبعا شرط يكون بنفس اسم الكلاس

~Employee(); هذا الحدث ايضا مثل حدث آنلودفريم في البيسك اي تنفذ الدالة عند انتهاء الكلاس يجب ان يكون باسم الكلاس مسبوق بعلام النفي

const char *getFirstName() ; دالة عملها تاخذ الاسم الاول

const char *getLastName() ; داله عملها تاخذ الاسم الاخير

static int getCount(); داله عملها تعيد عدد الكلاس المنشى

private: هنا يتم تصريح الدوال الخاص بمعنى لا تستخدم خارج الكلاس

char *firstName; متغير للاسم الاول

char *lastName; للاسم الثاني

static int count; عداد طبعا دائما يستخدم النوع استاتك في العدادت لانه لا يتغير

}; نهاية الكلاس

Employee::count = 0;

int Employee::getCount() هنا تم تعريف الداله كان بالامكان تعريفا من الداخل لكن هذه طريقه اخرى فقط

{ return count; } طبعا الداله فقط عملها تعد

Employee::Employee( const char *first, const char *last ){

firstName = new char[strlen(first)+1 ]; انشاء الاسم الاول بحجم مساوي للمتغير الاول فرست

strcpy( firstName, first ); ينسخ الاول النص الذي في الاول الى الاسم الاول

lastName = new char[strlen(last) + 1 ]; نفس السابق

strcpy( lastName, last );نفس السابق

++count; يزيد العداد بواحد

}

Employee::~Employee(){ هنا عند الانتهاء من الكلاس

delete [] firstName; يتم حذف الاسم الاول

delete [] lastName; والثاني

--count; ينقص العداد بواحد

}

int main() الداله الرئسة

{

يتم اظهار النص

cout << "Number of employees before instantiation is "

<< Employee::getCount() << endl; // use class name

يتم انشاء كلاس وداخلة اسمين

Employee *e1Ptr = new Employee( "Susan", "Baker" );

نفس الشئ

Employee *e2Ptr = new Employee( "Robert", "Jones" );

رساله للمستخدم ايضا تظهر عدد الكلاسات المنشئة

cout << "Number of employees after instantiation is "

<< e1Ptr-> getCount();

يحذف الموشر

delete e1Ptr; // recapture memory

e1Ptr = 0; // disconnect pointer from free-store space

delete e2Ptr; // recapture memory

e2Ptr = 0; // disconnect pointer from free-store space

cout << "Number of employees after deletion is "

<< Employee::getCount() << endl;

return 0;

}

تم تعديل هذه المشاركة بواسطة arabi2013 في 3 نوفمبر 2007 في 22:08

tvquran_6.gif

#4

مشكور...أثابك الله بجناته

هذا الموضوع مغلق.

مواضيع مشابهة