Avatar ·

ما الفرق بين struct و class في C++؟ متى نستخدم أيهما؟

مرحبًا أيها الزملاء!\n\nلقد بدأت للتو في تعلم C++ ولا أستطيع فهم الفرق بين struct و class. للوهلة الأولى، يبدوان متشابهين تقريبًا — كلاهما يسمح بدمج البيانات والدوال (methods). ولكن لماذا إذن توجد كلمتان محجوزتان في اللغة لنفس الشيء؟\n\nقرأت أنه في لغة C (التي جاءت منها struct) كانت الـ structures تخزن البيانات فقط، بينما في C++ تمت إضافة الدوال إليها. ولكن إليك هذا المثال:\n\n```cpp\nstruct Point {\n int x, y;\n void print() { cout << x << ", " << y; }\n};\n\nclass Circle {\n int radius;\n void draw() { /* ... */ }\n};\n```\n\nإذا حاولت القيام بذلك:\n\n```cpp\nPoint p;\np.x = 10; // يعمل\nCircle c;\nc.radius = 5; // خطأ! radius — private\n```\n\nلماذا أصبح radius فجأة private؟ لم أحدد شيئًا من هذا القبيل! في struct كل شيء عكسي — الحقول مفتوحة بشكل افتراضي