هل مازلت تتذكر الجملة من الدرس الأخير: "الفصل هو تجريد وتعميم لكائن ما، والكائن هو ملموس ومثيل للفصل"؟ بعد تعلم تعريف الفصل، فإن الخطوة التالية هي إنشاء الكائنات واستخدامها !
1. إنشاء الأشياء:
الفئة عبارة عن بنية تحتوي على وظائف، وهي نوع بيانات محدد ذاتيًا، وتستخدم لتعريف المتغيرات، وهي كائنات تم تعريف هذه الفئة، ويمكن أيضًا أن يقال إنشاء كائن، وهذا ما يعنيه!
استخدام الكائنات هو نفس استخدام الهياكل، حيث يتم الوصول إليها بشكل أساسي إلى الأعضاء الموجودين بالداخل، ويتم الوصول إليها جميعًا باستخدام ، مثل:
StudentA;A.num=101;strcpy(A.name,dotcpp);A.score=100;A.print();
تجدر الإشارة إلى أن جميع متغيرات الأعضاء في الفصل هنا تم الإعلان عنها كأنواع عامة ، وإذا تم الإعلان عنها كأنواع خاصة، فسيتم منعها من الإبلاغ عن الأخطاء إذا تم الوصول إليها بشكل أساسي من خلال الكائنات والمتغيرات في الوظيفة الرئيسية السبب هو أن متغيرات النوع الخاص هي أنواع خاصة ولا تسمح بالوصول الخارجي.
بالنسبة للمتغيرات الخاصة التي نريد حمايتها ولكننا نريد التحكم فيها، فعادةً ما نعلن عنها كأنواع خاصة، ثم نحدد طريقة تعيين خاصة من النوع العام في نفس الوقت، نظرًا لأن الأعضاء الداخليين يمكنهم الوصول إلى المتغيرات المعلنة بشكل خاص، فيمكننا استخدام هذا طريقة عامة خارجيًا للتحكم بشكل غير مباشر في هؤلاء الأعضاء الخاصين لتحقيق تأثير التغليف والحماية، وتسمى طريقة النوع العام هذه أيضًا بالواجهة الخارجية لهذه الفئة. أرجو أن تفهم هذه الجملة!
2. المؤشر إلى الكائن:
مثل المتغيرات العادية، تعد الكائنات أيضًا مساحة ذاكرة مستمرة، لذا يمكنك أيضًا إنشاء مؤشر للكائن، أي مؤشر الكائن لتخزين عنوان الكائن.
إذن طريقة الإنشاء تشبه استخدام مؤشر النوع العام، وطريقة التعريف هي كما يلي:
اسم الفئة * اسم المؤشر؛
على سبيل المثال، حدد Student *p؛ حدد مؤشرًا من النوع Clock. يجب أن يكون واضحًا أن الكائن لم يتم إنشاؤه هنا، وبالطبع لن يتم استدعاء المُنشئ. بعد ذلك، يمكنك تعيين عنوان كائن فئة من نفس النوع لهذا المؤشر، ثم الوصول إلى الأعضاء في الكائن من خلال ->.
الرمز هو كما يلي:
Student*p;StudentA;p=&A;p->print();
ما ورد أعلاه هو كيفية استخدام مؤشرات الكائنات، بالإضافة إلى استخدامها عند تعيين القيم والوصول إلى الأعضاء، يوصى أيضًا باستخدام المؤشرات عند تمرير المعلمات، لأنها تمرر العناوين ولا تنسخ التعيينات بين الكائنات، مما يقلل من حمل الذاكرة. وتحسين الكفاءة.
3. مرجع الكائن:
المرجع هو نوع جديد في C++. مرجع الكائن هو اسم مستعار لكائن فئة. في الأساس، يتم تعيين عنوان كائن الفئة لنوع المرجع. إذن كيف يتم تعريف الاستخدام؟ أظهرها لك أدناه.
StudentA;Student&Aq=A;
كما هو موضح في الكود أعلاه، حدد كائنًا من النوع Student، ثم استخدم & لتحديد نوع مرجعي من هذا النوع، وقم بتعيين الكائن A إلى Aq كتهيئة.
الأشياء التي يجب ملاحظتها هي:
1. مثل المؤشرات، يجب أن يكون كلاهما من نفس النوع قبل أن يتم الرجوع إليهما.
2. ما لم يتم استخدام قيمة الإرجاع أو المعلمة الرسمية للدالة، يجب تهيئة أنواع مرجعية أخرى في نفس الوقت!
3. لا يقوم النوع المرجعي بإنشاء كائن جديد، لذلك لن يتم استدعاء المنشئ.
نظرًا لأنه اسم مستعار لكائن فئة، فإن طريقة الاستخدام هي نفس كائن الفئة، باستخدام طريقة alias.member للوصول، مثل:
StudentA;Student&Aq=A;Aq.print();
كما ترون، عند استخدام نوع مرجعي، لا يزال الجوهر هو العنوان المخزن، لذلك، بغض النظر عن تعريف المعلمة، لن يكون هناك الكثير من الحمل في الذاكرة يستخدم نفس كائن الفئة نفسه عند إنشاء وسيطات الوظيفة، ما عليك سوى تمرير الكائن المرجعي مباشرة دون إضافة أحرف العنوان، لذلك يبدو أكثر سهولة وملاءمة. هذه هي ميزة الأنواع المرجعية.