Какова причина для класса Enum не следовать частному правилу классов C ++ по умолчаниюC++

Программы на C++. Форум разработчиков
Anonymous
Какова причина для класса Enum не следовать частному правилу классов C ++ по умолчанию

Сообщение Anonymous »

Поскольку C ++ 11, у нас была возможность использовать перечисления в области

Код: Выделить всё

enum struct MyScopedEnum
{
True = 1,
False = 0
};
< /code>
или < /p>
enum class MyScopedEnum
{
True = 1,
False = 0
};
Тем не менее, в отличие от обычного класса и struct , где участники являются частными по умолчанию для класса и по умолчанию для struct , Обзорные перечисления делают свои перечисления публичными независимо от того, используем ли мы Enum class или enum struct .
Это, кажется, нарушает установленное соглашение, которое класс подразумевает более строгий контроль доступа, чем struct . Учитывая, что перечисленные переводы не допускают явных спецификаторов доступа (т. Е. Public: внутри них недействительна), что является причиной обновления перечислений по умолчанию по умолчанию, а не следуя установленному классу и struct Поведение? < /p>
Хороший вариант использования для частного перечисления - это добавление других классов в качестве друзей. В некоторых структурах/двигателях (например, нереальном двигателе) только глобально объявленные перечисления подвергаются воздействию редактора/сценария. В этих случаях было бы здорово ограничить доступ перечисления.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -rule-of-c

Вернуться в «C++»