B’s op-new is bypassed by D’s op-new 
B’s ctor is always used (never bypassed) by D’s ctor.
This is a interesting difference.
Similarly, an umbrella class’s op-new  would not call a member object’s op-new. See [[more effC++]]
These issues are real concerns if you want to use op-new to prohibit heap instantiation of your class.
 provided these two classes each define an op-new()
By the way, op-new is a static member operator, but is still inherited.