动态多态性与动态内存分配

vai*_*hav 2 c++

是否总是需要从堆中分配内存以促进动态多态?到目前为止我遇到的所有例子都指向相同的例子.在实时编程中通常可以避免动态内存分配.因此,使用堆栈进行动态多态性是否有任何缺点,如下面的代码所示.

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;
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*man 7

一个更好的例子是:

void func(Base &base);

int main()
{
    Derived derived;

    func(derived);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

多态的使用不必靠近堆栈上创建对象的位置.

这些天我们的很多单元测试代码大致如下:

void test()
{
    MockObject mockObj;
    RealObject objectToBeTested(mockObj);

    // Do tests
}
Run Code Online (Sandbox Code Playgroud)

这很大程度上取决于多态性,但在堆栈上创建对象.