2009-09-30 61 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

范围是定义别名的声明区域。

相关问题