C++ 命名空间

C++ 应用程序中。例如,您可能会写一个名为 func() 的函数,在另一个可用的库中也存在一个相同的函数 func()。这样,编译器就无法判断您所使用的是哪一个 func() 函数。

因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。

定义命名空间

命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示:

为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:

name::code; // code 可以是变量或函数,name是命名空间的名字

eg:

#define _CRT_SECURE_NO_WARNINGS

#include<iostream>
namespace space_test1
{
typedef int T;
int a = ;
void fuc(void)
{
std::cout << "I am space_test1 \n";
}
} namespace space_test2
{
typedef double T;
int a = ;
void fuc(void)
{
std::cout << "I am space_test2\n";
}
}
int main()
{
//通过命名空间的不同,可以使用相同的函数,变量,类型
space_test2::T high = 1.1;
space_test1::T age = ;
space_test2::fuc();
space_test1::fuc();
std::cout << "high=" << high << std::endl;
std::cout << "age="<< age<<std::endl;
std::cout << "space_test1::a=" << space_test1::a << std::endl;
std::cout << "space_test2::a=" << space_test2::a << std::endl;
system("pause");
return ;
}

using 指令

您可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。

为什么我们不推荐using namespace  ...的做法:

命名空间使用这样直接的声明,破坏了它想要解决的同名函数,变量,类等问题,虽然在不引起二义性的情况下,我们会方便一些,因为可以少输入几个字符,但是,在不能保证是否有相同函数,变量,类的情况下,还是使用命名空间前缀更合适。

最新文章

  1. golang调用c++文件
  2. Js中this用法及注意点详解
  3. bzoj2518: [Shoi2010]滚动的正四面体
  4. [转载]IIS下开启php扩展失效? 感谢作者 本人泪流满面
  5. UVA 10034 Freckles 最小生成树
  6. 网页登陆校验码C#版代码
  7. oracle在linux配置信息
  8. ajax.js
  9. hibernate级联保存问题,出错not-null property references a null or transient value
  10. 让div产生滚动条
  11. mybatis-generato的功能扩展
  12. Jmeter 非 GUI 命令行执行脚本文件
  13. [Laravel] 05 - Controller
  14. Symfony2 学习笔记之系统路由
  15. [Android] 实现简单的相机程序
  16. 7 -- Spring的基本用法 -- 8... 抽象Bean与子Bean;Bean继承与Java继承的区别;容器中的工厂Bean;获得Bean本身的id;强制初始化Bean
  17. 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法
  18. css 样式表集合
  19. mongodb 3.4分片复制集配置
  20. Python安装教程最新版

热门文章

  1. 《Android进阶之光》--View体系与自定义View
  2. 基于tensorflow搭建一个神经网络
  3. Logging模块 + traceback模块 + importlib模块 + requests模块
  4. 5.27 Test
  5. Shiro笔记(四)编码/加密
  6. LED类代码
  7. 【转】大数据分析中Redis怎么做到220万ops
  8. Linux系统管理员应该知道的journalctl知识
  9. JavaScript:jklyDB
  10. Java代码常见的十种错误