الانتقال إلى المحتوى الرئيسي

لماذا لا يوجد منشئ في ج يقبل الحجج 0: الشرح والأمثلة-التوثيق على ج

تقدم لغة البرمجة سي للمبرمجين مجموعة واسعة من الميزات والمرونة ، ولكنها في نفس الوقت تفتقر إلى بعض الميزات التي يمكن أن نجدها في لغات البرمجة الأكثر حداثة مثل سي++. إحدى هذه الوظائف المفقودة هي منشئ يقبل الوسيطات 0.

المنشئ هو طريقة خاصة يتم استدعاؤها عند إنشاء كائن فئة جديد. يتم استخدامه لتهيئة الحالة الأولية للكائن ، أو تعيين القيم الافتراضية ، أو تنفيذ الإجراءات الضرورية الأخرى. في معظم لغات البرمجة ، يمكن للمنشئ قبول الوسائط التي يتم تمريرها عند إنشاء كائن. ومع ذلك ، في اللغة ج ، لا يمتلك المنشئون هذه الميزة.

عدم وجود منشئ يقبل الحجج 0 في اللغة ج يرجع إلى بساطته والحد الأدنى من مجموعة من الوظائف. بدلا من استخدام منشئ مع الوسيطات 0 ، في ج ، يجب على المبرمج استخدام وظائف التهيئة. يمكن أن تكون هذه دالة عادية تأخذ 0 وسيطات وتهيئة الكائن وفقا للقيم المطلوبة.

دعونا ننظر إلى مثال:

إينتبوينت (آند بي);

برينتف ("س = ٪ د ، ص = ٪ د

  1. "،ص. س ، ص. ص);
  2. العودة 0;
  3. }

في هذا المثال ، نعلن بنية "نقطة" تمثل نقطة على مستوى مع إحداثيات س و ص. بدلا من إنشاء منشئ مع الوسيطات 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];

كثافة العمليات العمر;

};