是否总是需要从堆中分配内存以方便动态多态?到目前为止我遇到的所有例子都指向相同的。 在实时编程中通常避免动态内存分配。那么,使用堆栈进行动态多态性有什么缺点吗,如下面的代码所示。
class Base
{
public:
virtual void Display()= 0;
};
class Derived:public Base
{
public:
void Display()
{
cout << "In derived" << endl;
}
};
int main()
{
Base* base;
Derived derived1;
base = &derived1;
base->Foo();
return 0;
}
最佳答案
一个更好的例子是:
void func(Base &base);
int main()
{
Derived derived;
func(derived);
return 0;
}
多态性的使用不必靠近在堆栈上创建对象的位置。
现在我们的很多单元测试代码大致如下:
void test()
{
MockObject mockObj;
RealObject objectToBeTested(mockObj);
// Do tests
}
这与多态性密切相关,但会在堆栈上创建对象。
关于c++ - 动态多态和动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486581/