c++关于命名空间内变量和函数及全局变量的使用和作用域

简介: c++关于命名空间内变量和函数及全局变量的使用和作用域

关于命名空间内变量和函数及全局变量的使用和作用域:


#include <iostream>using namespace std;namespace A{
    int a = 100;
    namespace B            //嵌套一个命名空间B
    {
        int a =20;
    }}
int a = 200;//定义一个全局变量
 
int main(int argc, char *argv[]){
    cout <<"A::a ="<< A::a << endl;
    cout <<"A::B::a ="<<A::B::a << endl;
    cout <<"a ="<<a << endl;
    cout <<"::a ="<<::a << endl;
 
    int a = 30;
    cout <<"a ="<<a << endl;
    cout <<"::a ="<<::a << endl;
 
    return 0;}

结果:

A::a =100  
A::B::a =20
a =200      //全局变量a::a =200
a =30       //局部变量a::a =200

即:全局变量 a 表达为 ::a,用于当有同名的局部变量时来区别两者。


补充关于 using 的错误事例:

#include <iostream>using namespace std;namespace A{
    int a = 100;
    int fun()
    {
        cout<<"a = "<<a<<endl;
    }
 
    namespace B            //嵌套一个命名空间B
    {
        int a =20;
        int fun()
        {
             cout<<"a = "<<a<<endl;
        }
 
    }}
 
int main(int argc, char *argv[]){
    cout<<a<<endl;
    fun();
 
    return 0;}

这样会出错:会显示 a 变量和 fun 函数 “was not declared in this scope”,即找不到这个 a 和 fun 函数。


解决办法: 用 using 来告诉编译器用到的是哪个命名空间内的内容。在 main() 上面加 using namespace A; 或者 using namespace A::B; 。这样就可以使用其中的 a 和 fun()。但是不能同时使用,因为这样也会导致编译出错,编译器器不知道要去使用哪个 a 和 fun()。

目录
相关文章
|
17天前
|
编译器 C语言 C++
C++命名空间的using声明
C++命名空间的using声明
12 0
|
16天前
|
C语言 C++ 数据格式
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
|
4天前
|
C++
C++命名空间详解
C++命名空间详解
12 0
|
15天前
|
编译器 C语言 C++
【C++初阶(九)】C++模版(初阶)----函数模版与类模版
【C++初阶(九)】C++模版(初阶)----函数模版与类模版
19 0
|
18天前
|
编译器 C语言 C++
【C++】C++入门第一课(c++关键字 | 命名空间 | c++输入输出 | 缺省参数)
【C++】C++入门第一课(c++关键字 | 命名空间 | c++输入输出 | 缺省参数)
|
19天前
|
存储 程序员 编译器
C++注释、变量、常量、关键字、标识符、输入输出
C++注释、变量、常量、关键字、标识符、输入输出
|
20天前
|
编译器 C语言 C++
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
|
20天前
|
开发框架 .NET 编译器
【C++】C++对C语言的关系,拓展及命名空间的使用
【C++】C++对C语言的关系,拓展及命名空间的使用
|
26天前
|
存储 缓存 C++
C++链表常用的函数编写(增查删改)内附完整程序
C++链表常用的函数编写(增查删改)内附完整程序
|
28天前
|
存储 安全 编译器
【C++】类的六大默认成员函数及其特性(万字详解)
【C++】类的六大默认成员函数及其特性(万字详解)
35 3