C++命名空间

简介: `C++`中的命名空间用于分割全局作用域,减少命名冲突。定义命名空间如`namespace expression {...}`,可使用`using`运算符或`using namespace`指令引用。案例展示如何在命名空间`Person`内定义变量和函数。注意:命名应具描述性,头文件中命名空间放预处理指令后,避免全局变量和过度使用`using`。命名冲突时可设命名空间别名。

C++ 命名空间

在团队合作大型项目时,难免会遇到自己想使用的变量名或函数名被占用的情况;命名空间分割了全局空间,每一个命名空间是一个作用域。

语法

定义命名空间

namespace expression  {
    // 类 函数 模板 定义


}

命名空间的别名

namespace 别名 = 原名

使用命名空间

在同一个命名空间内的变量可以之间使用,在命名空间外必须指出命名空间。

1.**运算符**

Person::a

2.using运算符

using 命名空间名字:: 名字

3.using编译

using namespace 命名空间名字

使用using编译指令可以使整个命名空间内的变量可用,如果区域内有相同的名字会优先使用局部的变量,不过可以使用域名解析符访问命名空间中的变量。

案例

#include "iostream"
using namespace std;
namespace Person {   // 命名空间 
  int a = 0;
   int num;
   void func(){
       cout<<" Person : func"<<endl;
   }
}

int main(){

  Person::num = 20;
   using Person::a;
   a = 20;
   Person::num = 200;
   using Person::a;
   a = 20;
  Person::func();

}

注意事项

在C++中使用命名空间时,需要注意以下几点:

  1. 命名空间的名称应该具有一定的描述性,以便于其他程序员理解其作用。

  2. 在头文件中使用命名空间时,应该将其放在头文件的最顶部(在包括预处理指令之后),这样可以防止出现重定义的问题。

  3. 在源文件中使用命名空间时,应该将其放在所有函数和全局变量之前。

  4. 如果要使用命名空间中的特定成员,可以使用using语句引入,但注意不要过度使用using语句,以免引起命名冲突。

  5. 如果命名空间中的成员与其他库或命名空间中的成员发生了命名冲突,可以使用命名空间别名来解决。

  6. 注意避免在命名空间中定义全局变量、全局函数等,因为这可能会造成代码可读性和可维护性上的问题。

目录
相关文章
|
13天前
|
编译器 C++
C++进阶之路:何为命名空间、缺省参数与函数重载
C++进阶之路:何为命名空间、缺省参数与函数重载
19 3
|
29天前
|
C++ 开发者
C++程序命名空间
C++程序命名空间
25 1
|
1月前
|
C语言 C++ 数据格式
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
|
1天前
|
C++
C++命名空间(namespace)的使用
C++命名空间(namespace)的使用
|
4天前
|
人工智能 安全 编译器
【C++入门】—— C++入门 (上)_命名空间
【C++入门】—— C++入门 (上)_命名空间
11 2
|
5天前
|
C语言 C++
【C++语言】冲突-C语言:命名空间
【C++语言】冲突-C语言:命名空间
|
18天前
|
C++
C++中使用namespace关键字定义和访问命名空间的技术性探讨
C++中使用namespace关键字定义和访问命名空间的技术性探讨
14 3
|
25天前
|
C++
C++命名空间(Namespace)详解
C++命名空间(Namespace)详解
|
28天前
|
开发框架 编译器 C语言
c++的发展史、缺省参数、命名空间你了解吗?
c++的发展史、缺省参数、命名空间你了解吗?
|
29天前
|
编译器 C语言 C++
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)(下)
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)
21 0