تقدم لغة البرمجة سي للمبرمجين مجموعة واسعة من الميزات والمرونة ، ولكنها في نفس الوقت تفتقر إلى بعض الميزات التي يمكن أن نجدها في لغات البرمجة الأكثر حداثة مثل سي++. إحدى هذه الوظائف المفقودة هي منشئ يقبل الوسيطات 0.
المنشئ هو طريقة خاصة يتم استدعاؤها عند إنشاء كائن فئة جديد. يتم استخدامه لتهيئة الحالة الأولية للكائن ، أو تعيين القيم الافتراضية ، أو تنفيذ الإجراءات الضرورية الأخرى. في معظم لغات البرمجة ، يمكن للمنشئ قبول الوسائط التي يتم تمريرها عند إنشاء كائن. ومع ذلك ، في اللغة ج ، لا يمتلك المنشئون هذه الميزة.
عدم وجود منشئ يقبل الحجج 0 في اللغة ج يرجع إلى بساطته والحد الأدنى من مجموعة من الوظائف. بدلا من استخدام منشئ مع الوسيطات 0 ، في ج ، يجب على المبرمج استخدام وظائف التهيئة. يمكن أن تكون هذه دالة عادية تأخذ 0 وسيطات وتهيئة الكائن وفقا للقيم المطلوبة.
دعونا ننظر إلى مثال:
إينتبوينت (آند بي);
برينتف ("س = ٪ د ، ص = ٪ د
- "،ص. س ، ص. ص);
- العودة 0;
- }
في هذا المثال ، نعلن بنية "نقطة" تمثل نقطة على مستوى مع إحداثيات س و ص. بدلا من إنشاء منشئ مع الوسيطات 0 ، نقوم بإنشاء وظيفة "إينتبوينت" ، والتي تأخذ مؤشر إلى بنية "نقطة" وتهيئته مع القيم الافتراضية ، في هذه الحالة 0. ثم نسمي هذه الوظيفة قبل إنشاء الكائن " ص " وطباعة قيم الإحداثيات.
سيكون إخراج هذا البرنامج:
- يسمح لك المنشئون بلغات البرمجة الأخرى بإنشاء كائن وتهيئة حقوله في تعبير واحد ، حتى إذا كانت هذه الحقول تحتوي على قيم افتراضية. ومع ذلك ، في ج لا يوجد منشئ مع الحجج 0 ، في المقام الأول لأن هذه اللغة لا تحتوي على دعم مدمج للعمل مع الفئات والكائنات. بدلا من ذلك ، ج يستخدم الهياكل والوظائف للعمل معهم.
تهيئة الكائن بعد إنشائه:
هيكل ميستروكت أوبج;
كائن.الحقل 1 = 0;
كائن.الحقل 2 = 0;
// إلخ.
تهيئة كائن عند التصريح:
هيكل ميستروكت أوبج = {0};
استخدام وظائف لتهيئة الكائنات:
هيكل ميستروكت كريتيميستروكت () {
هيكل ميستروكت أوبج = {0};
عودة الكائنات;
}
تسمح لك كل هذه الطرق بإنشاء كائنات ذات حقول لها قيم افتراضية. أنها تحل تماما محل منشئ مع الحجج 0 في اللغة ج. ومع ذلك ، تجدر الإشارة إلى أنه في ج such يوجد مثل هذا المنشئ مع الوسيطات 0 ويسمح لك بإنشاء كائن مع الحقول التي تمت تهيئتها بالقيم الافتراضية.
هنا مثال على رمز ج مما يدل على إنشاء وتهيئة كائن دون منشئ مع الحجج 0:
# تشمل
هيكل ميستروكت {
حقل إنت 1;
حقل عائم2;
حقل شار 3;
}
int main() {
// Инициализация объекта после его создания
struct MyStruct obj1;
obj1.field1 = 0;
obj1.field2 = 0.0;
- ومع ذلك ، في ج ، وهي لغة برمجة إجرائية ، لا يوجد مفهوم لفئة وكائن ، لذلك المنشئ مع الحجج 0 غير مطلوب.
تهيئة الهياكل عند الإعلان عنها. في ج ، الهياكل هي أنواع بيانات محددة من قبل المستخدم يمكن أن تحتوي على كيانات مختلفة داخل نفسها. عند الإعلان عن هيكل ، يمكنك تحديد قيم الأعضاء على الفور:
شخص الهيكل {
اسم الحرف [50];
كثافة العمليات العمر;