"Actually, most use cases of inheritance in C++ should use public inheritance. When other access levels are needed for base classes, they can usually be better represented as member variables instead."
Can anybody give a reason/logic behind the above statement along with a small test case maybe.