Hat ein C++ - Namespace-Alias, der in einer Funktionsdefinition definiert ist, einen Block, eine Funktion, eine Datei oder einen anderen Bereich (Gültigkeitsdauer)?Was ist der Gültigkeitsbereich eines Namespace-Alias in C++?
Antwort
Es ist eine Blockgültigkeitsdauer. ZB Wenn Sie einen Namespace-Alias wie folgt definieren, wäre der Namespace-Alias abc außerhalb des {...} Blocks ungültig.
{
namespace abc = xyz;
abc::test t; //valid
}
abc::test t; //invalid
außer es funktioniert nicht im Klassenumfang. –
Es hätte den Gültigkeitsbereich des Blocks, in dem es definiert wurde - wahrscheinlich identisch mit dem Funktionsumfang, es sei denn, Sie deklarieren den Alias innerhalb eines Blocks innerhalb einer Funktion.
Ich bin ziemlich sicher, dass ein Namespace-Alias nur Bereich innerhalb des Blocks hat, in dem es erstellt wird, wie die meisten anderen Arten von Bezeichnern. Ich kann im Moment nicht sicher überprüfen, aber this page scheint nicht dagegen zu sein.
Soweit ich weiß, ist es in dem Umfang, der erklärt wird. Wenn Sie also in einer Methode einen Alias verwenden, ist sie in dieser Methode gültig, in einer anderen jedoch nicht.
Der Bereich ist der deklarative Bereich, in dem der Alias definiert ist.
Werfen Sie einen Blick auf http://en.wikibooks.org/wiki/C++_Programming/Scope/Namespaces
Es ist für die Dauer des Umfangs gültig, in dem sie eingeführt wird.
Werfen Sie einen Blick auf http://en.cppreference.com/w/cpp/language/namespace_alias, ich vertraue der Erklärung der cppreference, es ist viel mehr Standard.
Bitte geben Sie nicht nur einen Link an. Fügen Sie außerdem mindestens einen Teilauszug von der Seite hinzu, auf die Sie verweisen. – Matthias
- 1. Was ist der Gültigkeitsbereich von XACT_ABORT?
- 2. Was ist der Gültigkeitsbereich von Variablen in einer Ansicht?
- 3. Was ist der Gültigkeitsbereich von glVertexAttribPointer und glEnableVertexAttribArray?
- 4. Was ist der Typ eines String-Literals in C++?
- 5. Gültigkeit eines dereferenzierten Char [] Pointer außerhalb der Methode Gültigkeitsbereich
- 6. Was passiert, wenn die C++ - Referenz ihren Gültigkeitsbereich verlässt?
- 7. Was ist der Gültigkeitsbereich von Variablen, die in einem statischen Block in Java deklariert sind?
- 8. Was ist das C++ - Äquivalent eines java.util.function.Consumer?
- 9. Was ist ** in C++?
- 10. Was ist der Zweck von :: in C#?
- 11. Was ist der% n Formatbezeichner in C?
- 12. Was ist der private Konstruktor in C#?
- 13. Was ist der 'kurze' Datentyp in C?
- 14. Was ist '\ 0' in C++?
- 15. Was ist modernes C++?
- 16. Was ist das Ergebnis eines Zuweisungsausdrucks in C?
- 17. Was den Zweck eines führenden „::“ in einem C++ Methodenaufruf ist
- 18. Was ist die zugrundeliegende Datenstruktur eines STL-Sets in C++?
- 19. Was ist der Unterschied zwischen% c und% C in printf?
- 20. Was ist der äquivalente C/C++ - Loselose-Algorithmus in Python
- 21. Was ist der Sinn eines "einfachen" Anfangsblocks?
- 22. Was ist der Standardwert eines Iterators?
- 23. Azure - Was ist der Zweck eines Ressourcengruppenstandorts?
- 24. Was ist ein vollständiger Deklarator in C?
- 25. Was ist der Managed C++ entspricht der C# using-Anweisung
- 26. Was ist "-1L" in C?
- 27. Was ist der Zweck der Verwendung eines Verweises auf eine Referenz in C++?
- 28. Was ist DBL_MAX in C++?
- 29. Variabler Gültigkeitsbereich innerhalb der PHP-Klasse
- 30. Wird der Speicher eines (Zeichen) -Arrays freigegeben, wenn der Gültigkeitsbereich überschritten wird?
Meinst du "mit [Namespace];" ? –
Es sieht so aus, als ob er das Aliasing eines längeren Namespace-Namens zu dem eines leichter zu verwendenden Bezeichners meint: http://msdn.microsoft.com/en-us/library/chwe1tc8.aspx – Twisol
Namespace-Alias (und Deklarationen verwenden) dieselben Scoping-Regeln wie andere Deklarationen in C++. –