Брутально и бессердечно о программировании и проектировании
ГлавнаяФорумАртПаттерныАнтипаттерныТест-драйвВопрос-ответКнигорецензииСправочная

enum и константы

Многие авторитетные люди советуют использовать «enum» вместо «#define» для объявления констант. Это хорошая рекомендация — «enum», в отличие от «#define», подчиняется пространству имен. Вот пример такого использования:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct packet
{
    enum
    {
        size = 1024,
        wait_echo = false
    };

    // ...
};

int main()
{
    packet pck = packet();

    // ...

    send(pck);

    if(packet::wait_echo)
    {
        //...
    }

    return 0;
}
 
Однако, существует еще более лучшая рекомендация. Вместо «enum» используйте статические константы. Их точно так же можно инициализировать внутри класса и, в отличие от «enum», они несут больше информации о типе константы. Константами точно так же можно манипулировать статическими процессами (параметризовать и специализировать шаблоны, и так далее).
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct packet
{
    static std::size_t const size = 1024;
    static bool const wait_echo = false;

    // ...
};

int main()
{
    packet pck = packet();

    // ...

    send(pck);

    if(packet::wait_echo)
    {
        //...
    }

    return 0;
}
 
Заметка к заметке

Глубокоуважаемый автором господин Вандевурд в своей книге «Шаблоны C++» рекомендует использовать все-таки первый способ. При всем своем уважении к господину Вандевурду, автор продолжает считать, что плюсы от честной и чистой типизации перевешивают все минусы, связанные с проблемами инстанцирования.

Оглавление
Статистика
© 2007—2009 Inside C++ Коммерческие услугиКонтактная информация

программы. темы для sony ericsson, sony ericsson телефоны. Мебель детская мягкая мебель цвет диванов.. медицинская справка, медецинские справки, справка для гаи. Фореста Фестиваль. свадебные салоны. риелтор