C++入门:namespace

1. 命名空间

在c语言中,变量和函数的名称都存在全局作用域当中,这可能会导致冲突。而C++为了解决这类问题,引入了命名空间这个概念的目的是: 对标识符的名称进行本地化, 以避免命名冲突或名字污染 namespace关键字的出现就是针对这种问题的。

如 C语言在未引入stdlib.h之前,定义一个整型变量 并命名为 rand程序并未报错,而引入后再使用rand变量就发生报错。

image.pngimage.png

2. 命名空间定义

定义命名空间,需要使用namespace关键字,后面跟这 命名空间的名字 ,并**一对{}即可,而在{}**里则即命名空间的成员。
注意:一个命名空间就定义了一个新的作用域,该空间中的所有内容都局限于该命名空间中。

#include <iostream>
using namespace std;

namespace pear
{
    int rand = 66;
    void cout() 
    {
        std::cout << "这是pear空间" << endl;
    }

}
namespace test
{
    int rand = 88;
    void cout()
    {
        std::cout << "这是test空间" << endl;
    }
}
int main()
{
    cout << pear::rand << endl;
    cout << test::rand << endl;
    pear::cout();
    test::cout();
    cout << "Hello World!\n";
}

这里定义了两个空间 :pear 和 test ,各自空间中,同名的变量和函数,都互不干扰!!!

image.png

2.1 命名空间的嵌套

命名空间也可以嵌套。

#include <iostream>
using namespace std;

namespace pear
{
    int rand = 66;
    void cout() 
    {
        std::cout << "这是pear空间" << endl;
    }
    namespace test //pear的子空间
    {
        int rand = 88;
        void cout()
        {
            std::cout << "这是test空间" << endl;
        }
    }
}

int main()
{
    cout << pear::rand << endl;
    cout << pear::test::rand << endl;
    pear::cout();
    pear::test::cout();
    cout << "Hello World!\n";
}

image.png

2.2 命名空间的合并

同一个工程中允许存在多个相同名称的命名空间,编译器最后会合并成同一个命名空间中,但相同名称的命名空间的变量或函数名出现相同则会出现错误。

namespace pear
{
    int rand = 66;
    void cout() 
    {
        std::cout << "这是pear空间" << endl;
    }

}
namespace pear
{
    int rand = 88;
    void cout()
    {
        std::cout << "这是test空间" << endl;
    }
}

image.png

3. 命名空间的使用

命名空间的使用有三种方法:

  1. 限定访问
std::cout << "这是pear空间" << endl;

::是作用域限定符,std是C++库标准域,其标准库中的对象、函数等都存在这个域中。在待使用的对象的左旁 加命名空间名称及作用域限定符

  1. 指定引入
#include <iostream>

using std::cout;
using std::endl;
int main()
{
    cout << "Hello World!" << endl;
}

在全局域中使用 using导入某域中的变量等。

  1. 全局展开
#include <iostream>

using namespace std;
int main()
{
    cout << "Hello World!" << endl;
}

使用using namespace 命名空间名称 引入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值