繁体   English   中英

使用声明是静态的吗?

[英]Are using-declarations static?

我对使用声明有些困惑。 我了解using foo::bar; 将符号bar从名称空间foo导入当前名称空间,但这是静态还是动态发生?

更具体地说,使用声明是否会导致开销? 是否可以根据条件导入具有相同名称的不同符号? (这是不好的做法,但我很好奇)

感觉应该是静态的,但是我找不到任何东西可以确认这一点...

命名空间解析在编译时发生。 您不能在运行时动态更改它们。

根据条件导入不同符号的一种方法是使用预处理器指令和宏:

#ifdef USEA
using a::f;
#else
using b::f;
#endif

c++ using编译时指令,即,它仅影响编译器在编译期间解析名称的方式

是否可以根据条件导入具有相同名称的不同符号?

取决于您在说什么条件。 如果像#ifdef这样的预处理器条件是可能的。 如果您考虑运行时条件,则否,在运行时不执行using

使用声明就像其他任何声明一样。 它有自己的范围,具体取决于编写的位置。 您可能无法动态声明变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM