是否总是需要从堆中分配内存以促进动态多态?到目前为止我遇到的所有例子都指向相同的例子.在实时编程中通常可以避免动态内存分配.因此,使用堆栈进行动态多态性是否有任何缺点,如下面的代码所示.
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; }
David Norman.. 7
一个更好的例子是:
void func(Base &base); int main() { Derived derived; func(derived); return 0; }
多态的使用不必靠近堆栈上创建对象的位置.
这些天我们的很多单元测试代码大致如下:
void test() { MockObject mockObj; RealObject objectToBeTested(mockObj); // Do tests }
这很大程度上取决于多态性,但在堆栈上创建对象.
一个更好的例子是:
void func(Base &base); int main() { Derived derived; func(derived); return 0; }
多态的使用不必靠近堆栈上创建对象的位置.
这些天我们的很多单元测试代码大致如下:
void test() { MockObject mockObj; RealObject objectToBeTested(mockObj); // Do tests }
这很大程度上取决于多态性,但在堆栈上创建对象.