On 2014.10.22 at 17:15 +0200, Martin Liška wrote: > Hello. > > I've been playing with following example: > > #include <stdlib.h> > > class Base > { > public: > virtual ~Base() {} > }; > > class Derived: public Base > { > }; > > #define N 1000 > > int main() > { > Base **b = (Base **)malloc (sizeof(Base *) * N); > for (unsigned i = 0; i < N; i++) > b[i] = new Derived(); > > for (unsigned i = 0; i < N; i++) > delete b[i]; > > return 0; > } > > Where I would like to somehow give an advice to devirtualize > machinery. My motivation is to inline destruction in 'delete b[i]'. > 'final' keyword does not solve my problem: > > a.c:9:7: error: virtual function ‘virtual Derived::~Derived()’ > class Derived: public Base > ^ > a.c:6:11: error: overriding final function ‘virtual Base::~Base()’ > virtual ~Base() final {}
What about: class Derived final: public Base {}; -- Markus