
کلاس (Class)، سازنده و مخرب در C++
در زبان C++، کلاس یکی از مهمترین مفاهیم برنامهنویسی شیءگرا (OOP) است. کلاس در واقع یک الگو (Template) برای ساخت اشیاء است؛ یعنی مشخص میکند که یک شیء چه ویژگیها (Properties / Data Members) و چه رفتارهایی (Methods / Member Functions) دارد.
1. کلاس (Class) چیست؟
کلاس مجموعهای از متغیرها و توابع است که در قالب یک واحد منطقی کنار هم قرار گرفتهاند. با استفاده از کلاس، میتوان از دنیای واقعی مدلسازی کرد؛ مثلاً یک کلاس «ماشین» میتواند ویژگیهایی مثل رنگ و سرعت و رفتارهایی مثل حرکت را در خود نگه دارد.
مثال ساده از یک کلاس:
class Car { public: string color; int speed; void drive() { cout << "Car is driving..." << endl; } };
در اینجا Car یک کلاس است که دو عضو داده (color و speed) و یک تابع عضو (drive) دارد.
2. سازنده (Constructor)
سازنده تابعی است که هنگام ساخت یک شیء از کلاس، به صورت خودکار اجرا میشود.
ویژگیهای سازنده:
همنام با کلاس است.
نوع بازگشتی ندارد (حتی void هم نمینویسیم).
هنگام ایجاد شیء به طور خودکار اجرا میشود.
معمولاً برای مقداردهی اولیه استفاده میشود.
مثال سازنده:
class Car { public: string color; int speed; // سازنده Car(string c, int s) { color = c; speed = s; } };
نحوهٔ ساخت شیء:
Car myCar("Red", 120);
به محض ایجاد myCar سازنده اجرا میشود و مقداردهی انجام میگیرد.
سازنده پیشفرض (Default Constructor)
اگر سازندهای بدون پارامتر تعریف کنیم یا برنامهنویس اصلاً سازنده ننویسد، سازنده پیشفرض وجود دارد.
Car() { color = "Black"; speed = 0; }
3. مخرب (Destructor)
مخرب تابعی است که هنگام نابودی یک شیء اجرا میشود.
ویژگیهای مخرب:
نام آن مانند کلاس است اما قبل از آن یک ~ میآید.
فقط یک مخرب میتواند وجود داشته باشد.
نوع بازگشتی ندارد.
خودکار اجرا میشود وقتی شیء از بین میرود (مثلاً خروج از بلوک یا delete).
کاربرد مخرب:
آزادسازی حافظهٔ heap
بستن فایلها
قطع ارتباطات شبکهای
انجام cleanup
مثال مخرب:
class Car { public: Car() { cout << "Constructor called!" << endl; } ~Car() { cout << "Destructor called!" << endl; } };
اگر این کلاس را اینگونه استفاده کنیم:
int main() { Car c; }
خروجی:
Constructor called! Destructor called!
مثال جامع:
#include <iostream> using namespace std; class Car { public: string color; int speed; // سازنده Car(string c, int s) { color = c; speed = s; cout << "Constructor called: " << color << ", " << speed << " km/h" << endl; } // مخرب ~Car() { cout << "Destructor called for " << color << endl; } void drive() { cout << "Car is driving at " << speed << " km/h" << endl; } }; int main() { cout << "Creating car1..." << endl; Car car1("Red", 120); car1.drive(); cout << "\nCreating car2..." << endl; Car car2("Blue", 90); car2.drive(); cout << "\nEnd of main function." << endl; return 0; }
خروجی
Creating car1... Constructor called: Red, 120 km/h Car is driving at 120 km/h Creating car2... Constructor called: Blue, 90 km/h Car is driving at 90 km/h End of main function. Destructor called for Blue Destructor called for Red
توضیح :
وقتی car1 و car2 ساخته میشوند، سازنده فراخوانی میشود.
وقتی برنامه به پایان میرسد و اشیاء از بین میروند، مخربها به ترتیب معکوس ایجاد اجرا میشوند.

Telegram: @CaKeegan
Gmail : amidgm2020@gmail.com