当我需要多态时,如何避免动态分配?

时间:2017-01-23 10:08:27

标签: c++ dynamic-memory-allocation

在Ubuntu 14.04和以下MCVE上使用GCC:

class TargetInterface
{
public:
   ~TargetInterface();
   //
   DataBuffer retDataBuffer();
   // following methods are all pure virtual
   virtual void delay() = 0;
   // ...
protected:   
   DataBuffer dataBuffer;
}

class FlashTarget : public TargetInterface
{
   public:
   void delay() override;
   // ...
}   

// globals
TargetInterface * targetInterface;

void main()
{
    targetInterface = new FlashTarget; // <--
    // ...
    // etc.
}

FlashTarget源自TargetInterfacetargetInterfacemain()动态分配的。

上述代码是否可以避免动态分配

1 个答案:

答案 0 :(得分:3)

这将是天真的答案:

void main()
{
    FlashTarget target;
    targetInterface = &target;
}

注意:使用这种方法,必须确保target只要使用targetInterface就会生效。