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 initialization | Point p{3.0, 4.0}; تهيئة مباشرة بالترتيب بلا باني مخصص |
| دوال وبواني | struct بـ C++ تقبل دوالًا وبواني ووراثة تمامًا مثل class |
💡 نصائح عملية
- استخدم struct لحزم بيانات بسيطة بلا منطق حماية (نقطة، حجم مستطيل، إعدادات)
- بمجرد ما تحتاج تغليفًا حقيقيًا وأعضاءً خاصة، انتقل لـ class — هذا هو الفصل العرفي بين الاثنين
⚠️ أخطاء شائعة
- الظن أن struct بـ C++ محدودة كما بلغة C (بيانات فقط بلا دوال) — هذا غير صحيح بـ C++
- استخدام class لبيانات بسيطة جدًا فتضطر لكتابة getters/setters لا داعي لها
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.