【C++札记】命名空间(namespace)
介绍
命名空间可以解决程序中的同名冲突,尤其大型项目多人开发中经常用到。比如我们使用C++的标准输出std::cout就使用了std命名空间。
使用作用域符::
#include <iostream>
using namespace std;
int var = 10;
void foo()
{
cout << "this is foo" << endl;
}
int main()
{
int var = 20;
cout << var << endl; //输出局部变量
cout << ::var << endl; //输出全局变量
foo(); //不加作用域符
::foo(); //加作用域符
return 0;
}
命名空间会对全局的变量和函数进行作用域打包。
在某些第三方库中是有namespace的,因此我们在使用这些库的时,要确定是否使用using namespace来解除名字前缀。
使用语法:
namespace XXX
{
int var = 10;
class A
{
public:
...
};
} //没有分号
使用
假设有命名空间namespace Animal;
namespace Animal
{
int age = 10;
void action()
{
cout << "eatiing" << endl;
}
}
用法一:直接使用命名空间成员
cout << Animal::age << endl;
Animal::action();
用法二: using使用命名空间成员
using Animal::age;
cout << age << endl;
用法三:使用命名空间全部成员
using namespace Animal;
cout << age << endl;
foo();
同时命名空间也支持嵌
#include <stdio.h>
namespace XXX
{
class A
{
public:
void test()
{
printf("this is namespace XXX class A\n");
}
};
}
using namespace XXX;
int main()
{
A* p = new A();
p->test();
return 1;
}
相同的命名空间编译时会合并
#include <iostream>
using namespace std;
namespace Space {
int a = 10;
}
namespace Space {
int b = 20;
}
using namespace Space;
int main()
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
欢迎加群交流:C/C++开发交流

【C++札记】命名空间(namespace)的更多相关文章
- PHP 命名空间(namespace)
PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...
- Atitit 深入理解命名空间namespace java c# php js
Atitit 深入理解命名空间namespace java c# php js 1.1. Namespace还是package1 1.2. import同时解决了令人头疼的include1 1.3 ...
- PHP 使用命名空间(namespace),实现自动加载
示例: #/DB/MySql.class.php也就是DB文件夹下有MySql.class.php文件 namespace DB; class MySql { public function __co ...
- PHP命名空间(Namespace)的使用详解(转)
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- PHP命名空间(Namespace)的使用详解
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- include与__autoload与命名空间namespace与PSR4详解
1. include, require, include_once, require_once include和require是PHP中引入源文件最基本的用法,其他例如__autoload, name ...
- PHP深入浅出之命名空间(Namespace)的使用详解
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
- 第十一节,命名空间namespace
1,命名空间的定义 命名空间可以把不同的方法分散到不同的文件去实现,如果你会objective-C,他的作用和里面的类目有异曲同工之妙.当然了也有很多不同的地方,首先要明白的是,命名空间并不是一个类, ...
- C++笔记008:C++对C的扩展——命名空间 namespace基础
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 第一, 命名空间的意义 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突. 我认识两位叫“A”的朋友,一 ...
随机推荐
- Java把多个list 合并成一个并去重
开发过程中遇到一个合并去重问题,任务完成后,总结出来一个比较简单的方法.对于List中不同类型的数据,需要采用不同的处理方式.List中如果是基础数据类型,直接合并去重即可:如果是对象类 ...
- mysql my.cnf文件
一.mysqld组值设置: 1.user = mysql #启动mysql的用户.2.pid-file = /var/run/mysqld/mysqld.pid #指定pid文件.3.socket = ...
- (转)SLOW READPROCESSOR;ERROR SLOW BLOCKRECEIVER错误日志分析
1.总结 "Slow ReadProcessor" 和"Slow BlockReceiver"往往是因为集群负载比较高或者某些节点不健康导致的,本文主要是帮助你 ...
- 关于大JSON 的问题的解决方式
ASP.NET MVC JSON 大数据异常提示JSON 字符串超出限制的异常问题 今天客户突然过来找我说在后台添加了一篇超长的文章后,所有后台的文章都显示不出来了.后台的前端显示是用easyui的, ...
- LeetCode 第 152 场周赛
一.质数排列(LeetCode-1175) 1.1 题目描述 1.2 解题思路 先统计出1-n中有多少个质数,得到质数个数\(x\),剩下的数\(y = n - x\): 使用排列组合公式得出结果 \ ...
- 关于Vue.use()详解
问题 相信很多人在用Vue使用别人的组件时,会用到 Vue.use() .例如:Vue.use(VueRouter).Vue.use(MintUI).但是用 axios时,就不需要用 Vue.use( ...
- vue - 设置全局html背景
需求 有时候有些组件需要全局设置body背景,有些不需要在组件中设置就行了 解决思路 1. 全局设置可以是html,body,这里大家可以试一下,这两个只要其中一个设置了background,另一个的 ...
- hwclock和date源码分析
一. hwclock 1.1 hwclock源码在哪里? util-linux 或者busybox 1.2 获取源码 git clone https://github.com/karelzak/uti ...
- 单硬盘根分区扩容(非LVM)
单用户模式(内核参数末尾加single)救援模式(用光盘启动,选第三个,rescue installed system) 救援模式有什么作用: 1可以更改root密码:2恢复硬盘.文件系统操作:3系统 ...
- sql数据库为null时候ASP语句判断问题
我有一个表test1,有字段num,字段num有null值,也有空值,也有其他值,我要用asp语句判断我查询出来的num的值是否为null值.应该怎么写 严谨一点,要有两层判断: If IsNull( ...