Имеет ли псевдоним пространства имен C++, определенный внутри определения функции, блок, функцию, файл или другую область действия (срок действия)?
Какова область действия псевдонима пространства имен в C++?
Ответы (7)
Это срок действия блока. Например, если вы определяете псевдоним пространства имен, как показано ниже, псевдоним пространства имен abc будет недействительным вне блока {...}.
{
namespace abc = xyz;
abc::test t; //valid
}
abc::test t; //invalid
Область действия — это декларативная область, в которой определен псевдоним.
Он будет иметь область действия блока, в котором он был определен, - вероятно, будет таким же, как область действия функции, если только вы не объявите псевдоним внутри блока внутри функции.
Я совершенно уверен, что псевдоним пространства имен имеет область действия только в пределах блока, в котором он создан, как и большинство других типов идентификаторов. В данный момент я не могу точно проверить, но эта страница вроде не против.
Насколько я знаю, это в заявленной области. Итак, если вы используете псевдоним в методе, то он действителен в этом методе, но не в другом.
Взгляните на http://en.wikibooks.org/wiki/C++_Programming/Scope/Namespaces
Он действителен в течение срока действия, в котором он введен.
Взгляните на http://en.cppreference.com/w/cpp/language/namespace_alias, я доверяю объяснению cppreference, оно гораздо более стандартно.