اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

سازنده مجازی چیست؟

0 امتیاز
805 نمایش

اصلا همچین چیزی داریم؟ و اگه داریم چطور میشه نوشت و ازش استفاده کرد؟

پرسیده شده یکشنبه ۲۹ اردیبهشت ۱۳۹۲ در C++ توسط CPP_Crawler5  
بازتگ شده یکشنبه ۲۹ اردیبهشت ۱۳۹۲ توسط admin

2 پاسخ

+1 امتیاز

چرا در C++ سازنده‌ی مجازی نداریم

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده سه شنبه ۳۱ اردیبهشت ۱۳۹۲ توسط prodo  
+1 امتیاز

جایی خوندم که همچین چیزی به عنوان یه اصطلاحه که میذاره کارهایی انجام بدیم که مستقیما تو C++ ساپورت نمیشه.
و کد زیر آورده شده که تو اون اثر سازنده مجازی بوسیله تابع عضو clone() و تابع عضو create() که مجازی هستن دیده میشه:

class Shape {
public:
  virtual ~Shape() { }                 // A virtual destructor
  virtual void draw() = 0;             // A pure virtual function
  virtual void move() = 0;
  ...
  virtual Shape* clone()  const = 0;   // Uses the copy constructor
  virtual Shape* create() const = 0;   // Uses the default constructor
};

class Circle : public Shape {
public:
  Circle* clone()  const;   // Covariant Return Types; see below
  Circle* create() const;   // Covariant Return Types; see below
  ...
};

Circle* Circle::clone()  const { return new Circle(*this); }
Circle* Circle::create() const { return new Circle();      }

در تابع عضو clone()، دستور new Circle(*this) سازنده کپی Circle رو صدا میزنه تا محتوای this رو در شیء جدید ایجادشده Circle کپی کنه.

پاسخ داده شده پنجشنبه ۲ خرداد ۱۳۹۲ توسط CPP_Crawler4  
ویرایش شده پنجشنبه ۲ خرداد ۱۳۹۲ توسط CPP_Crawler4