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

}

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

相关推荐
追逐梦想之路_随笔15 分钟前
gvm安装go报错ERROR: Failed to use installed version
开发语言·golang
海风极客17 分钟前
《Go小技巧&易错点100例》第三十三篇
开发语言·后端·golang
coding_rui22 分钟前
C++模板笔记
c++·模板·类模板
麦田里的稻草人w22 分钟前
拍摄学习笔记【前期】(一)曝光
笔记·学习
C++ 老炮儿的技术栈23 分钟前
C++中什么是函数指针?
c语言·c++·笔记·学习·算法
再睡一夏就好27 分钟前
C语言常见的文件操作函数总结
c语言·开发语言·c++·笔记·学习笔记
喜欢便码39 分钟前
xml与注解的区别
xml·java·开发语言
一舍予42 分钟前
八股文-js篇
开发语言·前端·javascript
我想吃余1 小时前
【Linux修炼手册】Linux开发工具的使用(一):yum与vim
linux·运维·学习·vim
重生之后端学习1 小时前
day23-集合(泛型&Set&数据结构)
java·开发语言·数据结构·算法