当前位置: 首页 > news >正文

namespace命名空间

namespace命名空间

什么是命名空间?

  • namespace=命名空间

同一个名称在不同的命名空间中所指向的对象是不同的

为什么要使用命名空间?

防止标识符的命名发生冲突

你写的代码中定义了个fun()函数
所使用的类库中也包含了一个fun()函数
当你的代码中调用fun()函数时
程序:?到底用哪里的fun()函数?类库里面的还是你写的?

为了解决这问题,引入了命名空间(namespace)的概念

命名空间的使用

命名空间的创建和使用

#include<iostream>
using namespace std;
namespace first_space
{void func(){cout <<"这是在第一个命名空间"<<endl;}
}
namespace second_space
{void func(){cout<<"这是在第二个命名空间"<<endl;}
}
// 使用命名空间
int main()
{// 使用第一个命名空间的函数func()first_space::func();// 使用第二个命名空间中的函数func()second_space::func();// 不指定命名空间使用func()会怎么样? 会报错 因为编译器在当前的命名空间中找不到func()// func();return 0;
}

命名空间中using的用法

using namespace 命名空间名称;

使用指定的命名空间

#include<iostream>
using namespace std;
namespace first_space
{void func(){cout <<"这是在第一个命名空间"<<endl;}
}
namespace second_space
{void func(){cout<<"这是在第二个命名空间"<<endl;}
}
// 指定使用某个命名空间 这样就不用在前面加上命名空间的名字了
using namespace second_space;
// 指定使用第二个命名空间
int main()
{// 使用第一个命名空间的函数func()first_space::func();// 使用第二个命名空间中的函数func()func();// 因为已经指定了所以不需要详细的说明使用哪个命名空间return 0;
}

命名空间使用时的注意点

  • 先声明命名空间再使用

和函数一样 必须先声明后使用

//using namespace second_space; 错误的写法 因为这个时候second_space还没声明呢 不能使用
namespace second_space
{void func(){cout<<"这是在第二个命名空间"<<endl;}
}
using namespace second_space;//正确的写法 先声明后使用

小结

  • 用户可以自定义命名空间
  • 可以使用C++自带的命名空间
  • 命名空间和函数一样必须先定义后使用

参考链接

详解c++的命名空间namespace

C++ 命名空间 | 菜鸟教程

http://www.lryc.cn/news/208761.html

相关文章:

  • golang中如何配置 sql.DB 以获得更好的性能
  • JAVA同城服务智慧养老小程序怎么开发?
  • Linux防火墙:Firewalld 常用命令
  • Java BigInteger比Long更大的整数自增转字符串存储
  • BigDecimal应用——计算费用场景中用到Integer,Double,BigDecimal三种类型出现的意外情况 结合BigDecimal源码分析
  • 数据抓取可以应用到哪些行业
  • 目标检测YOLO实战应用案例100讲-面向小目标检测的多尺度特征融合(续)
  • 如何选择适合的美颜SDK?
  • Spring-底层架构核心概念
  • RabbitMQ初入门
  • 电脑定时关机
  • 【算法】滑动窗口题单——4.不定长滑动窗口(求子数组个数)
  • CMake aux_source_directory 学习
  • Mybatis中延迟加载~
  • 【C语言】memmove()函数(拷贝重叠内存块函数详解)
  • 04-流媒体-ffmpeg.c源码分析
  • 迭代器 Iterator
  • 掌握CSS Flexbox,打造完美响应式布局,适配各种设备!
  • FlutterUnit 周边 | 收录排序算法可视化
  • 代码随想录Day30 贪心05 LeetCode T435无重叠区间 T763划分字母区间 T56 合并区间
  • 发展高质量存储力,中国高科技力量聚浪成潮
  • 修改svc的LoadBalancer的IP引发的惨案
  • 2520. 统计能整除数字的位数
  • BeanUtils.copyProperties的用法
  • 【RabbitMQ 实战】12 镜像队列
  • PyCharm社区版安装
  • 【LeetCode每日一题合集】2023.10.16-2023.10.22(只出现一次的数字Ⅲ)
  • 尚硅谷大数据项目《在线教育之实时数仓》笔记003
  • 【Linux】部署单体项目以及前后端分离项目(项目部署)
  • 设计模式之门面模式