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

}

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

相关推荐
王老师青少年编程几秒前
2024年3月GESP真题及题解(C++八级): 接竹竿
c++·题解·真题·gesp·csp·八级·接竹竿
偷星星的贼112 分钟前
C++中的访问者模式实战
开发语言·c++·算法
Engineer邓祥浩8 分钟前
设计模式学习(18) 23-16 迭代器模式
学习·设计模式·迭代器模式
雾岛听蓝15 分钟前
红黑树深度解析:设计原理与实现逻辑
c++
我即将远走丶或许也能高飞16 分钟前
reduxjs/toolkit 的学习使用
前端·javascript·学习·reactjs
gjxDaniel21 分钟前
A+B问题天堂版
c++·算法·字符串·字符数组
莫问前路漫漫21 分钟前
Java Runtime Environment(JRE)全解析:Java 程序跨平台运行的核心基石
java·开发语言
进阶小白猿22 分钟前
Java技术八股学习Day22
java·开发语言·学习
M__3324 分钟前
动态规划进阶:简单多状态模型
c++·算法·动态规划
蒟蒻的贤26 分钟前
操作系统复习
java·开发语言·数据库