For a good example of this, check out the various Linux function pointer tables. Implementers define the functions they'd like, and the rest get zeroed out. Quite elegant indeed.