文章目录
1、命名空间的定义和使用
为了避免命名冲突,需要使用命名空间。
1.1定义示例
namespace后面跟名称,再跟花括号。
cpp
#include <iostream>
namespace A{
int a = 10;
//可以定义变量、函数等
void print() {
std::cout << "A namespace\n";
}
}
namespace B {
int a = 100;
void print() {
std::cout << "B namespace\n";
}
}
std是C++标准命名空间,cout、cin等标准库中的类在使用时都要加上
std::。
using namespace std;是一下子引入std,后面就可以省略std::。
1.2使用示例
通过::访问命名空间内的变量、函数:
cpp
int main()
{
std::cout << A::a << std::endl;
std::cout << B::a << std::endl;
A::print();
B::print();
std::cout << "Hello World!\n";
}
2、命名空间只能在全局范围内定义
如果在局部定义,例如定义在一个函数内,则会报错:

3、命名空间可以嵌套定义
A里面有个子命名空间B,使用B时,要写A::B。
cpp
#include <iostream>
namespace A{
int a = 10;
void print() {
std::cout << "A namespace\n";
}
namespace B {
int a = 100;
void print() {
std::cout << "B namespace\n";
}
}
}
int main()
{
std::cout << A::a << std::endl;
std::cout << A::B::a << std::endl;
A::print();
A::B::print();
std::cout << "Hello World!\n";
}
4、命名空间设置别名
cpp
#include <iostream>
namespace AAA{
int a = 10;
}
int main()
{
namespace A = AAA;
std::cout << A::a << std::endl;
std::cout << "Hello World!\n";
}
5、命名空间的声明和实现分开写
5.1声明
A.h文件:
cpp
#pragma once
namespace A {
extern int a;//声明变量a,比起函数需要额外用extern修饰
void print();
}
5.2实现
A.cpp文件:
cpp
#include <iostream>
#include "A.h"//不可缺
int A::a = 100;
void A::print() {
std::cout << "A namespace\n";
}
5.3调用
cpp
#include <iostream>
#include "A.h"
int main()
{
std::cout << A::a << std::endl;//100
A::print();
std::cout << "Hello World!\n";
}