【C++】命名空间的使用

简介: 【C++】命名空间的使用

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的


1. 命名空间定义


定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

 

namespace myProject
{
  // 命名空间中可以定义变量/函数/类型
  int rand = 10;
  int Add(int left, int right)
  {
    return left + right;
  }
  //命名空间可以嵌套
  namespace ZS
  {
    int c;
    int d;
    int Sub(int left, int right)
    {
      return left - right;
    }
  }
}


注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中(ps:一个工程中的test.h和上面test.cpp中两个N1会被合并成一个)


2.命名空间使用


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

1.加命名空间名称及作用域限定符

int main()
{
printf("%d\n", N::a);
return 0;
}


2.使用using将命名空间中某个成员引入

using N::b;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
return 0;
}


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

using namespce N;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
Add(10, 20);
return 0;
}


3.std命名空间的使用惯例

 

1. 在日常练习中,建议直接using namespace std即可,这样就很方便。

2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +using std::cout展开常用的库对象/类型等方式。

相关文章
|
6天前
|
编译器 C语言 C++
C++命名空间的using声明
C++命名空间的using声明
13 0
|
6天前
|
C++
C++命名空间学习应用案例
C++中的命名空间示例:通过`my_namespace`防止命名冲突,包含`print_message()`函数,在`main()`中调用时需加上命名空间前缀`my_namespace::`。
17 3
|
6天前
|
安全 编译器 Linux
【C++练级之路】【Lv.1】C++,启动!(命名空间,缺省参数,函数重载,引用,内联函数,auto,范围for,nullptr)
【C++练级之路】【Lv.1】C++,启动!(命名空间,缺省参数,函数重载,引用,内联函数,auto,范围for,nullptr)
|
6天前
|
C++
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
35 0
|
6天前
|
C语言 C++ 数据格式
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
|
1天前
|
C++ 开发者
C++程序命名空间
C++程序命名空间
9 1
|
5天前
|
编译器 C++
C++入门(命名空间)
C++入门(命名空间)
|
6天前
|
自然语言处理 编译器 C语言
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
本文章是我对C++学习的开始,很荣幸与大家一同进步。 首先我先介绍一下C++,C++是上个世纪为了解决软件危机所创立 的一项面向对象的编程语言(OOP思想)。
36 1
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
|
6天前
|
编译器 C语言 C++
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
13 1
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
|
6天前
|
C语言 C++
【C++入门】关键字、命名空间以及输入输出
【C++入门】关键字、命名空间以及输入输出