توجد مثل هذه الوظيفة الخاصة في لغة C++، وهي وظيفة تحمل نفس اسم الفئة في الفصل وليس لها قيمة إرجاع طالما أننا نحدد كائنًا من الفئة، فسيقوم النظام باستدعائه تلقائيًا لتهيئة خاصة للكائن في معظم الحالات، نظرًا لأننا لا نحدد مُنشئًا ، سيقوم النظام بإنشاء نموذج افتراضي ومنشئ مخفي بشكل افتراضي.
بعد ذلك، سنعلمك كيفية تحديد المُنشئ الخاص بك. يحتاج المستخدم إلى تحديد مُنشئ واحد على الأقل بنفسه. لن يقوم النظام بإنشائه تلقائيًا بعد الآن، ولكنه سيحدد المُنشئ الأكثر تطابقًا للاتصال به بناءً على المُنشئ المحدد من قبل المستخدم .
على سبيل المثال، مع الاستمرار في استخدام فئة الطالب، نضيف مُنشئًا بمعلمات افتراضية، ويكون الكود كما يلي:
#include<iostream>#include<Cstring>usingnamespacestd;classStudent{private:intnum;//رقم الطالب charname[100];//name intscore;//score public:Student(intn,char*str,ints);intprint( );intSet(intn,char*str,ints);};Student::Student(intn,char*str,ints){num=n;strcpy(name,str);score=s;cout<<Constructor<< endl;}intStudent::print(){cout<<num<<<<name<<<<score;return0;}intStudent::Set(intn,char*str,ints){num=n;strcpy(name, str);score=s;}intmain(){StudentA(100,dotcpp,11);A.print();return0;}
أي أنه يمكن استدعاء المُنشئ في نفس الوقت الذي يتم فيه تعريفه لتحقيق وظيفة التهيئة، وتكون العملية كما يلي:
تجدر الإشارة إلى أنه نظرًا لأننا حددنا مُنشئًا بمعلمات افتراضية في الفصل، فلن يقوم النظام بإنشائه تلقائيًا في هذا الوقت، نحتاج أيضًا إلى تمرير ثلاث قيم أولية افتراضية عند تعريف الكائن، لأن المُنشئ إذا تم التحميل الزائد، فسيجد النظام الوظيفة الأكثر مطابقة، ولكن إذا لم يتم تعريفها على أنها مُنشئ بمعلمات افتراضية، فسيتم الإبلاغ عن خطأ، يرجى التجربة بنفسك!