في لغة C++، تعتبر الفئات والبنيات عبارة عن مخططات تُستخدم لإنشاء مثيل للفئة. تُستخدم الهياكل للكائنات خفيفة الوزن مثل المستطيل واللون والنقطة وما إلى ذلك.
على عكس الفئة، فإن البنيات في C++ هي نوع قيمة وليس نوع مرجعي. يكون ذلك مفيدًا إذا كانت لديك بيانات لا يُقصد تعديلها بعد إنشاء البنية.
إدخال جافا
هيكل C++ عبارة عن مجموعة من أنواع البيانات المختلفة. إنه مشابه للفئة التي تحتوي على أنواع مختلفة من البيانات.
بناء جملة الهيكل
struct structure_name { // member declarations. }
في الإعلان أعلاه، يتم الإعلان عن البنية قبل الكلمة الأساسية الهيكلية متبوعًا بالمعرف (اسم الهيكل). داخل الأقواس المتعرجة، يمكننا الإعلان عن متغيرات الأعضاء بأنواعها المختلفة. خذ بعين الاعتبار الحالة التالية:
struct Student { char name[20]; int id; int age; }
في الحالة المذكورة أعلاه، الطالب عبارة عن بنية تحتوي على ثلاثة متغيرات الاسم والمعرف والعمر. عندما يتم تعريف البنية، يتم تخصيص لم الذاكرة. عندما يتم إنشاء متغير البنية، يتم تخصيص الذاكرة. دعونا نفهم هذا السيناريو.
كيفية إنشاء مثيل الهيكل؟
يمكن تعريف متغير الهيكل على النحو التالي:
طلاب؛
ما هو برولوج
هنا، s هو متغير هيكلي من النوع طالب . عند إنشاء متغير البنية، سيتم تخصيص الذاكرة. تحتوي بنية الطالب على متغير char واحد ومتغيرين صحيحين. لذلك، فإن الذاكرة لمتغير char واحد هي 1 بايت وستكون ints 2*4 = 8. إجمالي الذاكرة التي يشغلها المتغير s هو 9 بايت.
كيفية الوصول إلى متغير الهيكل:
يمكن الوصول إلى متغير البنية ببساطة عن طريق استخدام مثيل البنية متبوعًا بعامل النقطة (.) ثم حقل البنية.
على سبيل المثال:
s.id = 4;
في البيان أعلاه، نحن نصل إلى حقل معرف البنية الطالب باستخدام نقطة(.) عامل التشغيل ويعين القيمة 4 لحقل المعرف.
أسئلة مقابلة جافا
مثال على بنية C++
دعونا نرى مثالاً بسيطًا على struct Rectangle الذي يحتوي على عرض وارتفاع لعضوين من البيانات.
#include using namespace std; struct Rectangle { int width, height; }; int main(void) { struct Rectangle rec; rec.width=8; rec.height=5; cout<<'area of rectangle is: '<<(rec.width * rec.height)<<endl; return 0; } < pre> <p> <strong>Output:</strong> </p> <pre> Area of Rectangle is: 40 </pre> <h2>C++ Struct Example: Using Constructor and Method</h2> <p>Let's see another example of struct where we are using the constructor to initialize data and method to calculate the area of rectangle.</p> <pre> #include using namespace std; struct Rectangle { int width, height; Rectangle(int w, int h) { width = w; height = h; } void areaOfRectangle() { cout<<'area of rectangle is: '<<(width*height); } }; int main(void) { struct rec="Rectangle(4,6);" rec.areaofrectangle(); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> Area of Rectangle is: 24 </pre> <p> <strong>Structure v/s Class</strong> </p> <table class="table"> <tr> <th>Structure</th> <th>Class</th> </tr> <tr> <td>If access specifier is not declared explicitly, then by default access specifier will be public. </td> <td>If access specifier is not declared explicitly, then by default access specifier will be private.</td> </tr> <tr> <td>Syntax of Structure: <br> <br> struct structure_name <br> { <br> // body of the structure. <br> }</td> <td>Syntax of Class: <br> <br> class class_name <br> { <br> // body of the class. <br> }</td> </tr> <tr> <td>The instance of the structure is known as 'Structure variable'. </td> <td>The instance of the class is known as 'Object of the class'.</td> </tr> </table></'area></pre></'area>
مثال على بنية C++: استخدام المنشئ والطريقة
دعونا نرى مثالاً آخر للبنية حيث نستخدم المُنشئ لتهيئة البيانات وطريقة لحساب مساحة المستطيل.
#include using namespace std; struct Rectangle { int width, height; Rectangle(int w, int h) { width = w; height = h; } void areaOfRectangle() { cout<<\'area of rectangle is: \'<<(width*height); } }; int main(void) { struct rec="Rectangle(4,6);" rec.areaofrectangle(); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> Area of Rectangle is: 24 </pre> <p> <strong>Structure v/s Class</strong> </p> <table class="table"> <tr> <th>Structure</th> <th>Class</th> </tr> <tr> <td>If access specifier is not declared explicitly, then by default access specifier will be public. </td> <td>If access specifier is not declared explicitly, then by default access specifier will be private.</td> </tr> <tr> <td>Syntax of Structure: <br> <br> struct structure_name <br> { <br> // body of the structure. <br> }</td> <td>Syntax of Class: <br> <br> class class_name <br> { <br> // body of the class. <br> }</td> </tr> <tr> <td>The instance of the structure is known as 'Structure variable'. </td> <td>The instance of the class is known as 'Object of the class'.</td> </tr> </table></\'area>
الهيكل مقابل الفئة
بناء | فصل |
---|---|
إذا لم يتم الإعلان عن محدد الوصول بشكل صريح، فسيكون محدد الوصول عامًا بشكل افتراضي. | إذا لم يتم الإعلان عن محدد الوصول بشكل صريح، فسيكون محدد الوصول خاصًا بشكل افتراضي. |
بناء جملة الهيكل: هيكل البنية_name { // جسم الهيكل. } | بناء جملة الفئة: فئة class_name { // نص الفصل. } |
يُعرف مثيل البنية باسم 'متغير الهيكل'. | يُعرف مثيل الفئة باسم 'كائن الفئة'. |