c++ - 动态多态和动态内存分配

标签 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;
}

最佳答案

一个更好的例子是:

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/

相关文章:

C++,如何在结构中引用类方法?

c++ - 如何防止阻塞路径?

c++ - 使用fwrite C++将压缩数据写入文件

c++ - 从 stdin 重复读取 EOF

c++ - 人口增长模式与预期不符

c++ - 在 C++ OS X 中分配大空间

c++ - 全局变量和链接器错误

c++ - 为什么 unordered_set 不允许 vector 作为键?

c++ - 倒序排序。 "Don' t 重复你自己”规则

c++ - SFML 像素操作 - 更改窗口中单个字符的大小