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

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

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

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

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

پرسیده شده یکشنبه ۲۹ اردیبهشت ۱۳۹۲ در 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