Algunos puntos de conocimiento sobre enumeración

"Lenguaje de programación C ++ (cuarta edición)" Capítulo 8.4

1. La enumeración se divide en dos tipos de clase de enumeración y enumeración. El primer valor de enumeración no se convertirá implícitamente a otros tipos y el último valor se convertirá en un número entero. Generalmente se debe utilizar el primero.

2. El tipo de valor de enumeración es generalmente int. Si cree que el tipo int es una pérdida de espacio, también puede especificar explícitamente otros tipos:

enum class color:char
{
    red,
    green,
    yellow
};

3. Operación de bit de enumeración:

enum class color:char
{
    red = 5,
    green = 6,
    yellow = 7
};

constexpr color operator |(color c1,color c2)
{
    return static_cast<color>(static_cast<int>(c1) | static_cast<int>(c2));
}

#define debug qDebug()<<
int main(int argc, char *argv[])
{
    color c1 = color::red;
    color c2 = color::green;
    color c3 = c1 | c2;
    debug static_cast<int>(c3) << (c3 == color::yellow);// 5 | 6 = 7
}

4. El valor de sizeof () de la enumeración es igual al valor de (int \ char) sizeof () del tipo de valor de enumeración.

5. Si no es necesario utilizar la enumeración para declarar objetos, se puede utilizar la enumeración anónima:

enum color:int
{
    red = 666,
    green = 999,
    yellow = 444
};

#define debug qDebug()<<
int main(int argc, char *argv[])
{
    int c = red;
    debug c;
}

Supongo que te gusta

Origin blog.csdn.net/kenfan1647/article/details/113815750
Recomendado
Clasificación