Private and Protected Members : C++

Konrad picture Konrad · Oct 22, 2008 · Viewed 488.9k times · Source

Can someone enlighten me as to the difference between private and protected members in classes?

I understand from best practice conventions that variables and functions which are not called outside the class should be made private - but looking at my MFC project, MFC seems to favor protected.

What's the difference and which should I use?

Answer

Firas Assaad picture Firas Assaad · Oct 22, 2008

Private members are only accessible within the class defining them.

Protected members are accessible in the class that defines them and in classes that inherit from that class.

Edit: Both are also accessible by friends of their class, and in the case of protected members, by friends of their derived classes.

Edit 2: Use whatever makes sense in the context of your problem. You should try to make members private whenever you can to reduce coupling and protect the implementation of the base class, but if that's not possible then use protected members. Check C++ FAQ for a better understanding of the issue. This question about protected variables might also help.