Определение ключевых слов в качестве идентификаторов
Ключевое слово _identifier (идентификатор) позволяет использовать любое слово, включая и ключевое, в качестве идентификатора. Его можно использовать и для слов, не являющихся ключевыми, но это не дает никаких преимуществ, и потому является бессмысленным.
На первый взгляд кажется нелепым, что такая черта может вообще понадобиться; однако, из-за того, что платформа .NET допускает использование в разработке приложений одновременно нескольких языков, может оказаться, что имя класса или переменной, определенное в части программы, написанной на другом языке, совпадет с каким-либо ключевым словом C++.
Очевидно, что использование в качестве имен ключевых слов значительно усложнит чтение и понимание исходного кода, так что к этому приему следует прибегать только в крайнем случае. Выглядящий несколько странно код, приведенный ниже, демонстрирует этот прием. В нем описывается класс, называющийся if, элемент данных которого называется while (эксцентричное сочетание). Затем создается экземпляр класса if и вызывается метод while. (О, меня уже тошнит!!!) Удивительно, но это компилируется и работает!
//IdentifierExample.срр #using <mscorlib.dll> using namespace System; // использовать пространство имен Система; _gc class _identifier(if) // класс сборщика мусора _ идентификатор (если) { public: int _identifier(while); // int _ идентификатор (while); }; void main(void) { _identifier(if)* pif = new _identifier(if); // _ идентификатор (если) // * pif = новый _ идентификатор (если); pif › _identifier(while)= 1; // pif › _ идентификатор (while) = 1; Console::WriteLine(pif › _identifier(while)); // (pif › _ идентификатор (while)); }