问询C++中using ::fun语句的含义及代码场景
关于
using ::fun的含义与代码运行逻辑 咱们一步一步拆解这个问题:
首先,::是C++里的全局作用域解析符,::fun就明确指向了全局作用域下定义的fun函数。而using ::fun;这句代码的作用,简单说就是:把全局作用域中的fun函数,“导入”到当前所在的命名空间(这里是enc)中。
结合你给出的代码具体分析:
- 你首先在全局作用域定义了
void fun(),它的功能是输出hello。 - 然后在命名空间
enc里写了using ::fun;,这相当于在enc命名空间内给全局的fun创建了一个“别名”。之后你如果在代码里调用enc::fun(),实际上执行的就是全局那个输出hello的函数;同时全局的fun()依然可以直接调用,这个导入操作不会影响原全局函数的可用性。
这里要区分一下,这种单个名字的using声明和大家常看到的using namespace std;(using指令)不一样:它是精准引入某一个特定名字,而不是把整个命名空间的所有名字都拉进来,所以不会轻易引发名字冲突的问题——除非enc里本来也有一个同名的fun函数,那才会出问题,但你的代码里没有这种情况,所以运行完全正常。
内容的提问来源于stack exchange,提问作者user14176554
相关产品推荐
相关产品推荐

