PC2st
شنبه 04 اسفند 1386, 22:25 عصر
اگه یک کلاس abstract باشه و کلاس دیگه ای رو ازش مشتق کنیم، در اینصورت چطور میشه یک نمونه از کلاس مشتق شده رو در حافظه stack نمونه سازی کرد؟
مثلا اگه این کلاس abstract باشه:
class Abstract
{
public :
virtual void DoIt() = 0;
};
و اگه این کلاس مشتق شده باشه:
class Derived : public Abstract
{
public :
virtual void DoIt();
};
void Derived::DoIt()
{
std::cout << "Hell!" << std::endl;
}
در اینصورت برای اینکه یک نمونه از کلاس Derived رو در حافظه stack نمونه سازی کنیم و درون شیئی از کلاس abstract قرار بدیم، چه کار باید کرد؟ کد زیر جواب نداد:
Derived o;
Abstract a( o );
و تنها در heap میشه نمونه سازی کرد:
Abstract *a = new Derived();
آیا راهی وجود نداره؟
مثلا اگه این کلاس abstract باشه:
class Abstract
{
public :
virtual void DoIt() = 0;
};
و اگه این کلاس مشتق شده باشه:
class Derived : public Abstract
{
public :
virtual void DoIt();
};
void Derived::DoIt()
{
std::cout << "Hell!" << std::endl;
}
در اینصورت برای اینکه یک نمونه از کلاس Derived رو در حافظه stack نمونه سازی کنیم و درون شیئی از کلاس abstract قرار بدیم، چه کار باید کرد؟ کد زیر جواب نداد:
Derived o;
Abstract a( o );
و تنها در heap میشه نمونه سازی کرد:
Abstract *a = new Derived();
آیا راهی وجود نداره؟