#cpp
Что означает использование нижнего подчеркивания в С++? Речь идет о его индивидуальном использовании, а не в составе переменной и т.п. В частности, пример: templateclass VDeleter { public: VDeleter() : VDeleter([](T _) {}) {} ........................................ Заранее спасибо!
Ответы
Ответ 1
Есть распространённая практика, не только в C++, давать название _ тем значениям или переменным, к которым не будут обращаться. Эдакое "неважно что", чему давать осмысленное имя нету (кхм) смысла. Где-то это часть семантики языка, но в C++ это просто переменная со странным названием. Оптимизатор может догадаться выкинуть работу с этим значением, откуда возможно, пока это не влияет на наблюдаемое поведение. Но это никак не относится к названию, компилятор может это сделать с любой другой переменной. То, что такое название не является "особым случаем" в семантике языка, накладывает несколько неприятных последствий: невозможность объявить несколько таких в одной области видимости (в одном списке аргументов, например) нестрогость соблюдения (обратиться к такой переменной технически можно) Почему этот аргумент вообще там должен быть — в каждом случае надо рассматривать отдельно, но случаи бывают. Простой пример прямо в языке: в C++ чтобы перегрузить постинкремент (i++), нужно перегружать operator++(int). Но в оператор никакой int не передаётся. Зачем он? Чтобы отличить от преинкремента (++i), чья сигнатура operator++(). Вот этот самый "бессмысленный аргумент" и можно назвать _. Чтобы подчеркнуть его бессмысленность. А в случае C++ (напоминает Harry), чаще можно убрать название вообще, что лишено вышеописанных недостатков.Ответ 2
Использование символа нижнего подчеркивания в качестве имени переменной допустимо. В данном примере переменная будет доступна в теле лямбда-функции. Но думаю, это не самый лучший способ именования сущностей.
Комментариев нет:
Отправить комментарий