2009-09-30 71 views
19

在函數定義中定義的C++名稱空間別名是否具有塊,函數,文件或其他作用域(有效期)?C++中的名稱空間別名的作用域是什麼?

+0

你的意思是「使用[namespace];」 ? – 2009-09-30 00:56:06

+0

它看起來像他意味着更長的名稱空間名稱的別名更容易使用的標識符:http://msdn.microsoft.com/en-us/library/chwe1tc8.aspx – Twisol 2009-09-30 01:00:42

+4

名稱空間別名(和使用聲明)有與C++中其他聲明相同的範圍規則。 – 2009-09-30 01:46:57

回答

20

這是一個塊有效性的持續時間。例如,如果您按如下方式定義名稱空間別名,則名稱空間別名abc將在{...}塊外部無效。

 

{ 
    namespace abc = xyz; 
    abc::test t; //valid 
} 
    abc::test t; //invalid 
 
+0

,但它在類範圍內不起作用。 – 2016-06-14 07:34:24

0

它將在其中定義的塊的範圍 - 可能與函數範圍相同,除非您在函數內的塊內聲明別名。

0

我很確定名稱空間別名只在其創建的塊中具有作用域,就像大多數其他類型的標識符一樣。目前我無法確定,但this page似乎沒有違背它。

0

據我所知,它在它的聲明範圍內。所以,如果你是一個方法的別名,那麼它在該方法中是有效的,但在另一個方法中是沒有的。

1

範圍是定義別名的聲明區域。

相關問題