تخطَّ إلى المحتوى

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 الكامل بالعربي.