class
الأصناف class
class تعرّف نوعًا جديدًا يجمع بيانات (أعضاء) ودوالًا تعمل عليها (دوال أعضاء) — حجر الأساس بالبرمجة كائنية التوجّه.
الصنف قالب لإنشاء كائنات: يحدد ما تملكه الكائنات (member variables) وما تفعله (member functions). افتراضيًا كل أعضاء class خاصة (private) ولا يُسمح بالوصول لها من خارج الصنف إلا عبر دوال عامة (public) — هذا مبدأ التغليف (encapsulation) الذي يحمي حالة الكائن من تعديل غير متوقّع.
الفرق الوحيد بين class وstruct بلغة C++ هو مستوى الوصول الافتراضي: class تبدأ private، وstruct تبدأ public — كل شيء آخر متطابق تمامًا.
الصياغة
class Name {
private:
Type member;
public:
ReturnType method();
};📄 مثال
class BankAccount {
double balance; // private افتراضيًا
public:
BankAccount(double initial) : balance(initial) {}
void deposit(double amount) { balance += amount; }
double getBalance() const { return balance; }
};
BankAccount acc(100);
acc.deposit(50);
std::cout << acc.getBalance(); // 150أهم النقاط
| العنصر | الوظيفة |
|---|---|
| private | الوصول من داخل الصنف فقط — المستوى الافتراضي بـ class |
| public | الوصول من أي مكان بالبرنامج |
| protected | الوصول من الصنف نفسه والأصناف المشتقة منه فقط |
| member function | دالة معرّفة داخل الصنف تعمل على أعضائه مباشرة |
💡 نصائح عملية
- اجعل الأعضاء private دائمًا وأتح الوصول عبر دوال getter/setter عامة — يحميك من كسر ثوابت الصنف
- استخدم initializer list بالباني (: balance(initial)) بدل التعيين داخل جسم الباني — أسرع وأصح للأعضاء من نوع مرجع أو const
⚠️ أخطاء شائعة
- نسيان أن أعضاء class تبدأ private افتراضيًا فيصطدم المبتدئ بخطأ ترجمة عند الوصول المباشر من الخارج
- كتابة كل شيء public لتفادي الخطأ بدل فهم سبب الخصوصية — يهدم فكرة التغليف بالكامل
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.