C++مثال حول تعريف أكثر من كونستركتور في الكلاس في ++C
في المثال التالي قمنا بتعريف كلاس إسمه Country
يمثل المعلومات التي يمكن أن يتضمنها أي بلد, و هو يحتوي على أربعة كونستركتورات.
الكونستركتور الأول لا يأخذ أي باراميتر.
الكونستركتور الثاني يأخذ باراميتر واحد عبارة عن إسم البلد.
الكونستركتور الثالث يأخذ إثنين باراميتر عبارة عن إسم و مساحة البلد.
الكونستركتور الرابع تأخذ ثلاثة باراميترات عبارة عن إسم و مساحة و عدد سكان البلد.
بعد إنشاء هذا الكلاس قمنا بإنشاء أربعة كائنات منه و في كل مرة استخدمنا كونستركتور مختلف لإنشاء الكائن.
مثال
using namespace std; // الذي يمثل الأشياء التي يمتلكها أي بلد Country هنا قمنا بتعريف الكلاس class Country { public: // سيملك هذه الخصائص, أي كل بلد سيملك هذه الخصائص Country كل كائن من الكلاس string name; double area; long population; // الكونستركتور الأول لا يأخذ باراميترات Country() { name = ""; area = 0; population = 0; } // الكونستركتور الثاني يتيح لك تحديد إسم البلد مباشرةً عند إنشاء الكائن Country(string n) { name = n; area = 0; population = 0; } // الكونستركتور الثالث يتيح لك تحديد إسم البلد و مساحته مباشرةً عند إنشاء الكائن Country(string n, double a) { name = n; area = a; population = 0; } // الكونستركتور الرابع يتيح لك تحديد إسم البلد و مساحته و عدد السكان مباشرةً عند إنشاء الكائن Country(string n, double a, long p) { name = n; area = a; population = p; } // هذه الدالة تعرض جميع المعلومات التي تم إدخالها في الكائن void printInfo() { cout << "name: " << name << endl; cout << "area: " << area << endl; cout << "population: " << population << endl; cout << "-------------------" << endl; } }; // main() هنا قمنا بتعريف الدالة int main() { // هنا كل كائن يمثل بلد ,Country هنا قمنا بإنشاء 4 كائنات من الكلاس Country c1; // c1 هنا سيتم إستدعاء الكونستركور الأول, أي لن يتم تمرير أي معلومة حول البلد الذي يمثله الكائن Country c2("KSA"); // c2 هنا سيتم إستدعاء الكونستركور الثاني, أي سيتم تحديد إسم البلد الذي يمثله الكائن Country c3("Turkey", 780580); // c3 هنا سيتم إستدعاء الكونستركور الثالث, أي سيتم تحديد إسم و مساحة البلد الذي يمثله الكائن Country c4("Lebanon", 10452, 4467000); // c4 هنا سيتم إستدعاء الكونستركور الربع, أي سيتم تحديد إسم و مساحة و عدد سكان البلد الذي يمثله الكائن // لعرض خصائص جميع الكائنات printInfo() هنا قمنا باستدعاء الدالة c1.printInfo(); c2.printInfo(); c3.printInfo(); c4.printInfo(); return 0; }
سنحصل على النتيجة التالية عند التشغيل.
name: area: 0 population: 0 ------------------- name: KSA area: 0 population: 0 ------------------- name: Turkey area: 780580 population: 0 ------------------- name: Lebanon area: 10452 population: 4467000 -------------------
كما لاحظت هنا أن الكلاس Country
يملك أربعة كونستركتورات إسمهم Country()
و كل كونستركتور منهم يتيح لك تمرير قيم معينة مباشرةً عند إنشاء كائن من الكلاس Country
.
في كل مرة قمنا فيها باستدعاء الكونستركتور Country()
وجدنا أن المترجم قام باستدعاء الكونستركتور Country()
الذي يحتوي على نفس عدد الباراميترات الذي كنا نمرره له.