C++的命名空间域

简介: C++的命名空间域

一、域作用限定符

::  即是域作用限定符,它的作用是指明一个标识符(变量、函数或类)来自哪一个作用域范围

二、编译器搜索变量、函数等的原则

1.先搜索局部变量,2.再搜索全局变量,3.最后搜索指定的命名空间域

三、命名空间域

用来解决变量、函数等重命名问题

如下,对于重命名的变量x编译器会报错

使用命名空间域解决这个问题

1.方法一:使用域作用限定符来指定变量的位置

#include <iostream>
namespace bit1
{
  int a = 10;
}
namespace bit2
{
  int a = 20;
}
int main()
{
  printf("%d\n", bit1::a);
  printf("%d\n", bit2::a);
  return 0;
}

2.方法二: 命名空间域展开(展开后就无需使用域作用限定符来指定变量的位置)

#include <iostream>
namespace bit1
{
  int a = 10;
  int b = 20;
  int c = 30;
}
using namespace bit1;
int main()
{
  printf("%d\n", a);
  printf("%d\n", b);
  printf("%d\n", c);
  return 0;
}

3.方法三:使用using将命名空间中的某个成员引入

命名空间域std被包含在头文件 iostream 中,同时cout 与 endl 被封装在命名空间域std中

#include <iostream>
using std::cout;
using std::endl;
int main()
{
  cout << "hello world" << endl;
  return 0;
}

补充:命名空间域可以重名,编译器会将重名的两个命名空间域合并

四、命名空间域的嵌套使用

可以在命名空间域中嵌套多个命名空间域

#include <iostream>
using std::cout;
using std::endl;
namespace bit
{
  namespace zz
  {
    int x = 0;
  }
  namespace zbc
  {
    int x = 10;
  }
}
int main()
{
  cout << bit::zbc::x << endl;
  cout << bit::zz::x << endl;
  return 0;
}

五、命名空间域展开与头文件展开的区别

头文件展开是将头文件中包含的内容拷贝到源文件中

命名空间域展开是扩大编译器的搜索范围,编译器可以到被展开的命名空间域中搜索变量、函数等

目录
相关文章
|
24天前
|
编译器 C语言 C++
C++命名空间的using声明
C++命名空间的using声明
13 0
|
24天前
|
C++
C++命名空间学习应用案例
C++中的命名空间示例:通过`my_namespace`防止命名冲突,包含`print_message()`函数,在`main()`中调用时需加上命名空间前缀`my_namespace::`。
17 3
|
3天前
|
编译器 C++
C++进阶之路:何为命名空间、缺省参数与函数重载
C++进阶之路:何为命名空间、缺省参数与函数重载
17 3
|
19天前
|
C++ 开发者
C++程序命名空间
C++程序命名空间
22 1
|
24天前
|
C语言 C++ 数据格式
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
|
8天前
|
C++
C++中使用namespace关键字定义和访问命名空间的技术性探讨
C++中使用namespace关键字定义和访问命名空间的技术性探讨
12 3
|
9天前
|
域名解析 程序员 C++
C++命名空间
`C++`中的命名空间用于分割全局作用域,减少命名冲突。定义命名空间如`namespace expression {...}`,可使用`using`运算符或`using namespace`指令引用。案例展示如何在命名空间`Person`内定义变量和函数。注意:命名应具描述性,头文件中命名空间放预处理指令后,避免全局变量和过度使用`using`。命名冲突时可设命名空间别名。
15 2
|
15天前
|
C++
C++命名空间(Namespace)详解
C++命名空间(Namespace)详解
|
18天前
|
开发框架 编译器 C语言
c++的发展史、缺省参数、命名空间你了解吗?
c++的发展史、缺省参数、命名空间你了解吗?
|
19天前
|
编译器 C语言 C++
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)(下)
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)
20 0