If you are writing a base class that is intended for wide use, use caution with member data. Do not add member data that is only useful to some derived classes, as every derived class will have no choice but to own it. Take care to only include truly generic member data.