[c++] لماذا لا توجد آلية مشغل استنساخ متعدد الأشكال الافتراضي في c ++؟



Answers

Question

أعني، مشغل الاستنساخ، والذي يستخدم بشكل افتراضي منشئ النسخ والمشغل الجديد لإرجاع كائن جديد. بحيث إذا كان الإعلان في الطبقة الأساسية هو الظاهري ، فإنه يوفر تلقائيا آلية استنساخ متعدد الأشكال (أي فئة يجب أن لا تكون افتراضية بشكل افتراضي)

مزايا:

  • تجنب القيام Derived * clone() const { return new Derived(*this); } Derived * clone() const { return new Derived(*this); } كل مكان

  • السماح للمؤشرات الذكية القياسية مثل std::unique_ptr أو نسخة مخصصة std::unique_ptr لاستنساخ الكائن دون أن يكون لهم الاعتماد على دلالي غير قياسي

هل سيكون الخطر / العيب؟




Links