Yeah...I'm a noob at design pattern but I recognize it!
This design pattern is called
"bad programming". [smile]
Why ?
see
this [paragraph 23.3]
In the base ctor you cannot call a virtual function in the derived object; why ?
Because the derived object does not exist yet.
The result is that you always call the base function.
To be sure try this
virtual bool IsSizable() const = 0; // pure virtual
You will get a compiler error or probably (example MSVC6) a runtime error (something like
pure virtual function call)
PS: if you call IsSizable() in other functions AFTER the object is created is OK but it has not a specific name; it's the classic OOP.