سازنده ها

آموزش سازنده ها در C++ (به زبان کاملا ساده)

folderکلاس و اشیا
commentsبدون دیدگاه
اساطیر زبان

در این آموزش، در مورد سازنده ها در C++ یاد خواهید گرفت; سازنده چیست، چطور تعریف می شود و انواع آن.

سازنده نوع خاصی از توابع کلاس است که وقتی ایجاد می شود، یک شی را به صورت خودکار راه اندازی می کند.

 


سی پلاس پلاس

توی این پک فوق العاده، سی پلاس پلاس رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با سی پلاس پلاس به عمق فهم برنامه نویسی شیرجه بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

 


برنامه نویسی شبکه معماری کامپیوتر هوش مصنوعی و تجاری

توی این پک فوق العاده، صفرتاصد مبانی برنامه نویسی رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با صفرتاصد مبانی برنامه نویسی اپلیکیشن بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

کامپایلر سازنده را با نام و نوع بازگشتی آن می شناسد.

سازنده نام مشابه کلاس دارد و هیچ نوع بازگشتی ندارد و همواره از نوع public است.

… .. …

class temporary

{

private:

int x;

float y;

public:

// Constructor

temporary(): x(5), y(5.5)

{

// Body of constructor

}

… .. …

};

int main()

{

Temporary t1;

… .. …

}

برنامه بالا نشان می دهد که سازنده بدون نوع بازگشتی و هم نام کلاس تعریف شده است.

سازنده چگونه کار می کند؟

در شبه کد بالا، ()temporary سازنده است.

هنگامی که یک شی از کلاس ایجاد می شود، سازنده به طور خودکار صدا زده شده، به x مقدار ۵ و به y مقدار ۵٫۵ می دهد.

همچنین می توانید متغیر ها را داخل بدنه سازنده به شکل زیر مقدار دهی کنید. با این حال، این روش ترجیح داده نمی شود.

temporary()

{

x = 5;

y = 5.5;

}

// This method is not preferred.

استفاده از سازنده در C++

فرض کنید روی ۱۰۰ شی Person کار می کنید و مقدار پیش فرض متغیر age برابر با ۰ است. تمام اشیا را یکی یکی مقدار دهی کردن بسیار خسته کننده است.

در عوض، می توانید یک سازنده تعریف کنید که مقدار سن را برابر ۰ قرار می دهد. پس کاری که باید انجام دهید این است که شی Person ایجاد کنید و سپس سازنده به طور خودکار سن را مقدار دهی می کند.

این موقعیت ها اغلب هنگام سر و کار داشتن با آرایه ای از اشیاء بوجود می آیند.

همچنین، اگر بخواهیم قسمتی از کد، بلافاصله پس از ایجاد شیء اجرا شود، می توان کد را درون سازنده قرار داد.

مثال ۱ : سازنده در C++

محاسبه ی محیط مستطیل و نمایش آن.

  1. void GetLength()
  2. {
  3. cout << “Enter length and breadth respectively: “;
  4. cin >> length >> breadth;
  5. }
  6. int AreaCalculation() { return (length * breadth); }
  7. void DisplayArea(int temp)
  8. {
  9. cout << “Area: ” << temp;
  10. }
  11. };
  12. int main()
  13. {
  14. Area A1, A2;
  15. int temp;
  16. A1.GetLength();
  17. temp = A1.AreaCalculation();
  18. A1.DisplayArea(temp);
  19. cout << endl << “Default Area when value is not taken from user” << endl;
  20. temp = A2.AreaCalculation();
  21. A2.DisplayArea(temp);
  22. return 0;
  23. }

در برنامه بالا، کلاس Area برای مدیریت ویژگی های مرتبط با محیط ایجاد شده که دو عضو طول و عرض دارد.

یک سازنده تعریف شده که طول را برابر ۵ و عرض را برابر ۲ قرار می دهد.

همچنین دارای سه تابع

GetLength()

AreaCalculation()

DisplayArea()

برای دریافت طول از کاربر، محاسبه محیط و نمایش محیط است.

وقتی که اشیاء A1 و A2 ایجاد می شوند، سازنده طول و عرض هر دو را برابر ۵ و ۲ قرار می دهد.

سپس، تابع GetLength() فراخوانی می شود که مقدار طول و عرض شی A1 را از کاربر می گیرد و طول و عرض شی A1 را تغییر می دهد.

سپس، محیط شی A1 با فراخوانی تابع ()AreaCalculation محاسبه و در متغیر temp ذخیره می شود و در نهایت، نمایش داده می شود.

برای شی A2، هیچ اطلاعاتی از کاربر خواسته نمی شود. بنابراین طول و عرض به ترتیب ۵ و ۲ است.

سپس، محیط A2 محاسبه و نمایش داده می شود که برابر ۱۰ است.

خروجی

Enter length and breadth respectively: 6

۷

Area: 42

Default Area when value is not taken from user

Area: 10

سربار گذاری سازنده

می توان چندین سازنده با نام یکسان (نام کلاس) تعریف کرد با این تفاوت که تعداد آرگومان های متفاوتی داشته باشند.

بسته به تعداد و نوع آرگومان های ارسال شده، سازنده خاص آن صدا زده می شود.

برای استفاده از دیگر سازنده ها، در هنگام ایجاد یک شیء آرگومان ها باید به سازنده ارسال شوند.

مثال ۲ : سربار گذاری سازنده

  1. // Source Code to demonstrate the working of overloaded constructors
  2. #include <iostream>
  3. using namespace std;
  4. class Area
  5. {
  6. private:
  7. int length;
  8. int breadth;
  9. public:
  10. // Constructor with no arguments
  11. Area(): length(5), breadth(2) { }
  12. // Constructor with two arguments
  13. Area(int l, int b): length(l), breadth(b){ }
  14. void GetLength()
  15. {
  16. cout << “Enter length and breadth respectively: “;
  17. cin >> length >> breadth;
  18. }
  19. int AreaCalculation() { return length * breadth; }
  20. void DisplayArea(int temp)
  21. {
  22. cout << “Area: ” << temp << endl;
  23. }
  24. };
  25. int main()
  26. {
  27. Area A1, A2(2, 1);
  28. int temp;
  29. cout << “Default Area when no argument is passed.” << endl;
  30. temp = A1.AreaCalculation();
  31. A1.DisplayArea(temp);
  32. cout << “Area when (2,1) is passed as argument.” << endl;
  33. temp = A2.AreaCalculation();
  34. A2.DisplayArea(temp);
  35. return 0;
  36. }

برای شی A1، هنگام ایجاد شیء، هیچ آرگومانی ارسال نمی شود.

بنابراین، سازنده بدون هیچ آرگومان فراخوانی شده است که طول را برابر ۵ و عرض را برابر ۲ قرار می دهد. بنابراین، مساحت شی A1 برابر ۱۰ خواهد بود.

برای شی A2، مقادیر ۲ و ۱ به عنوان آرگومان در هنگام ایجاد شی ارسال می شود.

بنابراین، سازنده با دو آرگومان فراخوانی می شود که طول را برابر ۲ و عرض را ۱ قرار می دهد. از این رو، مساحت شی A2 برابر ۲ خواهد بود.

خروجی

Default Area when no argument is passed.

Area: 10

Area when (2,1) is passed as argument.

Area: 2

سازنده کپی پیش فرض

یک شی را می توان با یک شی دیگر از همان نوع، مقدار دهی اولیه کرد. همانند کپی کردن محتویات یک کلاس را به کلاس دیگر.

در برنامه بالا، اگر می خواهید شی A3 را به گونه ای مقدار دهی کنید که مقادیر آن همانند A2 باشد، می توان به صورت زیر این کار را انجام داد:

….

int main()

{

Area A1, A2(2, 1);

// Copies the content of A2 to A3

Area A3(A2);

OR,

Area A3 = A2;

}

ممکن است فکر کنید، باید یک سازنده جدید برای انجام این کار ایجاد کنید اما سازنده دیگری نیاز نیست. به این دلیل که سازنده کپی پیش فرض در همه کلاس ها ساخته شده است.

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in,

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست