Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

C++مثال حول تعريف أكثر من كونستركتور في الكلاس في ++C

في المثال التالي قمنا بتعريف كلاس إسمه Country يمثل المعلومات التي يمكن أن يتضمنها أي بلد, و هو يحتوي على أربعة كونستركتورات.
الكونستركتور الأول لا يأخذ أي باراميتر.
الكونستركتور الثاني يأخذ باراميتر واحد عبارة عن إسم البلد.
الكونستركتور الثالث يأخذ إثنين باراميتر عبارة عن إسم و مساحة البلد.
الكونستركتور الرابع تأخذ ثلاثة باراميترات عبارة عن إسم و مساحة و عدد سكان البلد.

بعد إنشاء هذا الكلاس قمنا بإنشاء أربعة كائنات منه و في كل مرة استخدمنا كونستركتور مختلف لإنشاء الكائن.

مثال

main.cpp
#include <iostream>

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() الذي يحتوي على نفس عدد الباراميترات الذي كنا نمرره له.