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

struct

الهياكل struct

struct مطابقة لـ class تمامًا في C++ إلا أن أعضاءها public افتراضيًا — تُستخدم عرفًا للبيانات البسيطة بلا سلوك معقّد.

على عكس C حيث struct تحمل بيانات فقط بلا دوال، بـ C++ يمكن لـ struct أن تحتوي دوالًا وبواني ووراثة تمامًا مثل class — الفرق التقني الوحيد هو أن أعضاء struct تبدأ public. عرفيًا، مبرمجو C++ يستخدمون struct لحزم بيانات بسيطة بلا منطق معقّد (مثل نقطة إحداثيات أو إعدادات)، ويستخدمون class عندما يكون هناك تغليف وسلوك حقيقي يحتاج حماية.

الصياغة

struct Name {
    Type member1;
    Type member2;
};

📄 مثال

struct Point {
    double x;
    double y;
};

struct Config {
    std::string title = "افتراضي";
    bool darkMode = true;
};

Point p{3.0, 4.0};
std::cout << p.x << ", " << p.y; // وصول مباشر public

أهم النقاط

العنصرالوظيفة
public (افتراضي)كل الأعضاء متاحة مباشرة من خارج الهيكل بدون getter/setter
aggregate initializationPoint p{3.0, 4.0}; تهيئة مباشرة بالترتيب بلا باني مخصص
دوال وبوانيstruct بـ C++ تقبل دوالًا وبواني ووراثة تمامًا مثل class

💡 نصائح عملية

  • استخدم struct لحزم بيانات بسيطة بلا منطق حماية (نقطة، حجم مستطيل، إعدادات)
  • بمجرد ما تحتاج تغليفًا حقيقيًا وأعضاءً خاصة، انتقل لـ class — هذا هو الفصل العرفي بين الاثنين

⚠️ أخطاء شائعة

  • الظن أن struct بـ C++ محدودة كما بلغة C (بيانات فقط بلا دوال) — هذا غير صحيح بـ C++
  • استخدام class لبيانات بسيطة جدًا فتضطر لكتابة getters/setters لا داعي لها

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.