کاربرد Constructor c++ چیست
Constructor c++ چیست
سازنده یا Constructor c++ روش خاصی است که هنگام ایجاد یک شی از کلاس به طور خودکار فراخوانی می شود. برای ایجاد یک سازنده یا constructor c++ از همان نام کلاس و سپس () استفاده میشود. برای اینکه مفهوم Constructor c++ چیست را مشخص کنیم این مطلب را در اختیار شما قرار میدهیم. به مثال زیر توجه نمایید:
class MyClass { // The class
public: // Access specifier
MyClass() { // Constructor
cout << "Hello World!";
}
};
int main() {
MyClass myObj; // Create an object of MyClass (this will call the constructor)
return 0;
}
خروجی این چند خط برنامه Hello World! است. همان عباراتی که در وسط برنامه نوشته شده است. با توجه به این مثال متوجه شدیم که سازنده پیش فرض یا constructor c همان نام کلاس را دارد و همیشه حالت عمومی داشته و هیچ مقدار خروجی و بازگشتی ندارد. در ادامه به پارامترهای یک constructor c++ اشاره مینماییم.
پارامترهای constructor c++ چیست
سازنده پیش فرض یا constructor c که حتی برخی اوقات آن را default constructor در c++ مینامند، دقیقا مانند توابع میتواند پارامترهایی را بگیرد که این پارامترها برای تنظیم مقادیر اولیه و ویژگیهای مرتبط با آنها مفید خواهند بود.
در کلاس زیر که شامل برند، مدل و سال است، یک سازنده پیش فرض با پارامترهای مختلف وجود دارد. در داخل سازنده پیش فرض، صفات را برابر با پارامترهای سازنده قرار میدهیم. مثلا برند = x . وقتی سازنده پیش فرض یا constructor c++ فراخوانی میشود، مقادیر پارامترها به سازنده منتقل میشود. به مثال زیر توجه نمایید:
class Car { // The class
public: // Access specifier
string brand; // Attribute
string model; // Attribute
int year; // Attribute
Car(string x, string y, int z) { // Constructor with parameters
brand = x;
model = y;
year = z;
}
};
int main() {
// Create Car objects and call the constructor with different values
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Print values
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
خروجی این برنامه عبارت است از:
- BMW X5 1999
- Ford Mustang 1969
خروجی شامل برند خودرو، مدل و سال ساخت می باشد.
دقیقا مانند توابع، سازنده های پیش فرض را میتوان خارج از کلاس نیز تعریف کرد. ابتدا باید در داخل کلاس سازنده را معرفی نمود و سپس در خارج کلاس با مشخص نمودن نام کلاس فراخوانی و خروجی برنامه را دریافت کرد. به مثال زیر که متن دیگری از مثال قبل است دقت نمایید:
class Car { // The class
public: // Access specifier
string brand; // Attribute
string model; // Attribute
int year; // Attribute
Car(string x, string y, int z); // Constructor declaration
};
// Constructor definition outside the class
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
int main() {
// Create Car objects and call the constructor with different values
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Print values
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
در این برنامه خروجی تغییر ننموده است بلکه ساختار کدنویسی همانطور که گفته شد متفاوت طراحی شده است.
انواع constructor c++
سازندهها در c++ در سه قالب پیش فرض، پارامتری یا کپی وجود دارند. سازنده پیش فرض یا constructor c یا به تعبیر دیگر default constructor در c++ بخشی از برنامه شامل نام کلاس است که با () خاتمه میپذیرد. در حالت پارامتری سازندهها، مقادیر پارامتر در داخل پرانتز وارد میشود. در حالت سازنده copy constructor نیز از یک قالب کپی شده قبلی استفاده میشود. به تصویر زیر توجه نمایید.
انواع پیش فرض در c++
برای هر کدام از برنامههای مبتنی بر سازندهها مثالی میزنیم.
حالت اول، default : در این حالت سازنده فاقد آرگومان و ورودی است.
// Cpp program to illustrate the
// concept of Constructors
#include <iostream>
using namespace std;
class construct {
public:
int a, b;
// Default Constructor
construct()
{
a = 10;
b = 20;
}
};
int main()
{
// Default constructor called automatically
// when the object is created
construct c;
cout << "a: " << c.a << endl
<< "b: " << c.b;
return 1;
}
حالت دوم، پارامتری: در این حالت آرگومانها و ورودیها داخل پرانتز وارد شدهاند.
// CPP program to illustrate
// parameterized constructors
#include <iostream>
using namespace std;
class Point {
private:
int x, y;
public:
// Parameterized Constructor
Point(int x1, int y1)
{
x = x1;
y = y1;
}
int getX()
{
return x;
}
int getY()
{
return y;
}
};
int main()
{
// Constructor called
Point p1(10, 15);
// Access values assigned by constructor
cout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY();
return 0;
}
حالت سوم، کپی : در این برنامه کپی از یک کلاس به عنوان آرگومان یک سازنده وارد شده است.
// Illustration
#include "iostream"
using namespace std;
class point {
private:
double x, y;
public:
// Non-default Constructor & default Constructor
point (double px, double py) {
x = px, y = py;
}
};
int main(void) {
// Define an array of size 10 & of type point
// This line will cause error
point a[10];
// Remove above line and program will compile without error
point b = point(5, 6);
}
این مطالب تمام آن چیزی بود که با مثالهای متعدد در خصوص Constructor c++ چیست لازم بود تا بدانیم. با مکتوب همراه باشید تا اطلاعات بیشتری در خصوص نکات مرتبط با موضوعات برنامه نویسی در اختیار شما علاقهمندان قرار دهد.
با توجه به نکاتی که اشاره شد میتوانید خروجی پروژههای پایانی را استخراج نمایید و با جایگزینی مطالب مشابه در کدهای معرفی شده بالا، تمرین برنامه نویسی داشته باشید. با ما همراه باشید تا با دنیای جذاب برنامهنویسی بیشتر آشنا و همراه شوید.