Use direct implementation and do not call virtuals in the constructor