Разница между защищёнными и открытыми членами класса в C++ заключается в уровне доступа к ним. 14
Открытые члены (объявлены в секции public) доступны из любого места программы. 1 Такие члены данных и функции-члены могут быть доступны другим классам и функциям. 5
Защищённые члены (объявлены в секции protected) доступны внутри класса и в классах, которые наследуются от этого класса. 23 При этом к ним нельзя получить доступ за пределами класса, кроме как с помощью дружественного класса. 5 Защищённые члены ведут себя как открытые по отношению к производному классу и как закрытые по отношению к остальной части программы. 1
Таким образом, открытые члены доступны всем, а защищённые — только внутри класса и в определённых случаях — для определённых подклассов.