Inheriting is just another way of using a class. It is more coupled and by making your member variables protected, you couple even more, so you shouldn't change them without knowing the impact on every inherited class. If it is your base-class and your inherited classes, there's probably not going to be any harm, but you do lose control of how members should be accessed (locking, logging, read/write, persistency,...).