Пожалуйста, НЕ используйте UNDERSCORES перед тем, как любое имя переменной или имя параметра в C ++ !!!
Имена, начинающиеся с подчеркивания или двойного подчеркивания, ЗАБРОНИРОВАНЫ для реализаторов C ++.Имена с подчеркиванием зарезервированы для работы библиотеки.
Если у вас есть чтение в стандарте кодирования C ++, вы увидите, что на самой первой странице написано:
«Не переусердствуйте в присвоении имен, но используйте последовательное соглашение об именах: есть только два обязательных элемента: a) никогда не используйте« скрытые имена », начинающиеся с подчеркивания или содержащие двойное подчеркивание;(p2, Стандарты кодирования C ++, Херб Саттер и Андрей Александреску)
Кроме того, вы сами можете понять, почему такое использование подчеркивания может иметь катастрофические последствия при разработке программного обеспечения.
Попробуйтекомпилируя простую программу helloWorld.cpp, например:
g++ -E helloWorld.cpp
. Вы увидите все, что происходит в фоновом режиме.Вот фрагмент кода:
ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
try
{
__streambuf_type* __sb = this->rdbuf();
if (__sb)
{
if (__sb->pubsync() == -1)
__err |= ios_base::badbit;
else
__ret = 0;
}
Вы можете увидеть, сколько имен начинаются с двойного подчеркивания!
Также, если вы посмотрите на виртуальные функции-члены, вы увидите, что * _vptr - сгенерированный указательдля виртуальной таблицы, которая автоматически создается, когда вы используете одну или несколько виртуальных функций-членов в вашем классе!Но это уже другая история ...
Если вы используете подчеркивание, у вас могут возникнуть конфликтные ситуации, и вы НЕ БУДЕТЕ ИДЕИ, что их вызывает, пока не станет слишком поздно.