ما هو بالضبط الصب الديناميكي في C ++ [مكرر

StackOverflow https://stackoverflow.com/questions/1781763

  •  21-09-2019
  •  | 
  •  

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

هل يمكن لأي شخص أن يخبر ما يعنيه الصب الديناميكي بالضبط في C ++. أين يمكننا بالضبط استخدام هذا الصب الديناميكي؟ تم طلب هذا لي في المقابلة وذهبت فارغًا لهذا السؤال :).

هل كانت مفيدة؟

المحلول

حاول استخدام البحث أولاًإجابة قديمة

نصائح أخرى

Dynamic_cast هو طريقة الصب لمعرفة فئة الكائن في وقت التشغيل.

class Base
{
    public:
    virtual bool func1();
};


class Derived1 : Base
{
    public:
    virtual bool func1();

    virtual bool funcDer1();
};



class Derived2 : Base
{
    public:
    virtual bool func1();
    virtual bool funcDer2();
};

Base* pDer1 = new Derived1;
Base* pDer2 = new Derived2;


Derived2* pDerCasted = dynamic_cast<Derived2*>(pDer2);
if(pDerCasted)
{
    pDerCasted->funcDer2();
}


-> We cannot call funcDer2 with pDer2 as it points to Base class
-> dynamic_cast converts the object to Derived2 footprint 
-> in case it fails to do so, it returns NULL .( throws bad_cast in case of reference)

ملاحظة: عادة ، يجب تجنب Dynamic_cast بتصميم OO دقيق.

صب ديناميكي يكتشف بأمان نوع مثيل الكائن في وقت التشغيل.

يتم تحقيق ذلك من خلال الجداول المرجعية لإنشاء التحويل البرمجي ، والتي يمكن أن تكون كبيرة إلى حد ما. لهذا السبب ، غالبًا ما يتم تعطيله أثناء التجميع إذا كان المبرمج يعلم أنه لا يستخدم الميزة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top