0
点赞
收藏
分享

微信扫一扫

C++ 命名空间和双冒号运算符

@[TOC]

双冒号运算符

  • 双冒号运算符加在输出变量前面是说明要输出全局变量,抛弃就近原则
  • std::cout就是打开std的一扇门,使用里面的cout输出方法
    
    int i = 0;

void test(){
int i = 10;
cout << i << endl;//0
cout << ::i << endl;//0
}

int main(){
test();
return 0;
}

### using编译指令
```cpp
#include<iostream>
#include <cstring>

#include "test.h"
using namespace std;

namespace Tomcat {
    int a = 20;
}

void test(){
    int a = 10;
    using Tomcat::a;
    cout << a << endl;//这里出现了二义性,就是就近原则和命名空间冲突
    //所以在using声明的时候要避免二义性
}

int main() {
    test();
    return 0;
}
  • 下面这种写法只是打开了房间,但输出的还是按照就近原则
  • 此时如果删除局部变量,输出的就是Tomcat命名空间的值
  • 此时如果在add code here..这行加入namespace,就会产生编译报错,这种情况下就写Tomcat::a写明要使用的房间
    void test(){
    int a = 10;
    using namespace Tomcat;
    //add code here..
    cout << a << endl;//这里出现了二义性,就是就近原则和命名空间冲突
    //所以在using声明的时候要避免二义性
    }
举报

相关推荐

0 条评论