C++ 学习 之 名字空间 namespace


必须在模块里面 extern 声明

在一个 cpp 文件中, 一个namespace 可以多次定义,最后合并,使用 using namespace A 这种引入方式的话,使用的时候可以用所有 A 中的数据

多个 cpp 文件的话,不能会自动合并相同的 名字空间,(但是匿名的名字空间不会合并)所以不能重复定义

namespace A {
    int a = 0;
    void fun();
}

using  A::a;

namespace A {
    int b = 1;
}

int main()
{
   std:: cout << b <<std:: endl;
}

如果是上面的写法的话,不能使用没有引入的名字空间里面的变量和函数

改成下面的就是对的

namespace A {
    int a = 0;
    void fun();
}

using  A::a;

namespace A {
    int b = 1;
}
using A::b;

int main()
{
   std:: cout << b <<std:: endl;
}
namespace A {
    int a = 0;
    void fun();
}

using namespace A;
int a = 1;

int main()
{
   std:: cout << a <<std:: endl;  // 这个写法是错误的
   std::cout << ::a << std::endl;  // 输出的是全局变量 a
   std::cout << A::a << std::endl;  // 输出的是 A 中的变量 a

}

要注意的是上面的情况,使用的时候要说明是调用哪一个

相关推荐
不染_是非4 分钟前
Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
后端·python·学习·django
qq_1873526345 分钟前
马踏棋盘c++
开发语言·c++·马踏棋盘c++
巭犇10 分钟前
c语言中define使用方法
c语言·开发语言
Midsummer啦啦啦16 分钟前
NumPy库学习之argmax函数
学习·numpy
Mero技术博客19 分钟前
第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
数据库·学习·缓存
qing_04060328 分钟前
C++——string的了解和使用
开发语言·c++·string
QuantumYou43 分钟前
【对比学习串烧】 SWav和 BYOL
学习·机器学习
The Straggling Crow1 小时前
go 战略
开发语言·后端·golang
ai安歌1 小时前
【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目
java·开发语言·后端·tomcat·web·intellij idea
为暗香来1 小时前
MySQL学习(视图总结)
数据库·学习·mysql