[C++] namespace相关语法
本段测试代码包括如下内容:
(1) 如何访问namespace中声明的名称;
(2) namespace导致的相关冲突;
(3) namespace可嵌套;
(4) 可以在namespace中使用using声明和using编译命令;
(5) 未命名的namespace:其作用域为定义该namespace所在的声明区域。C++推荐用来替代static定义静态变量。
#include <iostream>
using namespace std;
namespace jerry{
int height;
int weight;
void showHeight();
string name;
}
//
namespace jerry{
void showHeight()
{
cout<<"Method 3: Jerry height: "<<height<<" kg"<<endl;
}
}
namespace elements
{
namespace fire
{
int flame;
using namespace jerry; //(4) can use 'using' in namespace define
using std::cout;
}
float water;
}
//(5) no name namespace
//其作用域为定义时所在的声明域,可用来替换static变量,这是C++标准推荐的行为
namespace {
string data;
}
void testFun();
int main()
{
cout<<"This code is to test namespace"<<endl;
/*not allowed to define namespace in code segment
//Error
namespace jerry{
int height;
int weight;
}
*/
//(1) To access the data in namespace
//Method 1: 作用域解析符
jerry::height = ;
cout<<"Method 1: Jerry height: " << jerry::height <<" cm"<<endl;
//Method 2: using声明
using jerry::weight;
weight = ;
cout<<"Method 2: Jerry weight: " << weight<<" kg"<<endl;
//Method 3: using编译指令:All the define data in namespace jerry can be access.
using namespace jerry;
showHeight();
//(2) about name conflict
{
jerry::name = "Jerry";
string name = "Tom";
//using jerry::name; Error
cout << "name: "<<name<<endl;
/*
This method will lead conflict with locall parameter
using jerry::name;
cout << "name: "<<name<<endl;
*/
cout << "name: "<<jerry::name<<endl;
using namespace jerry;
//局部变量会覆盖jerry命名空间的name定义
cout << "name: "<<name<<endl;
}
//(3) namespace can nest
elements::fire::flame = ;
using namespace elements::fire;
//(5) no name namespace
//其作用域为定义时所在的声明域,可用来替换static变量,这是C++标准推荐的行为
data = "hello";
cout<<"No name namespace: data: " << data <<endl;
testFun();
}
void testFun()
{
/*not allowed to define namespace in code segment
//Error
namespace jerry{
int height;
int weight;
}
*/
//(5) no name namespace
data = "hello in function";
cout<<"No name namespace: data: " << data <<endl;
}
运行结果为:

[C++] namespace相关语法的更多相关文章
- sublime Emmet的用法及相关语法
本节来讲一下Emmet插件的用法及相关语法. Emmet插件极大的提高了编程员的编程速度,下面我们来讲讲它的具体语法: 一.生成 HTML 文档初始结构 HTML 文档的初始结构,就是包括 docty ...
- HTML基础-------最初概念以及相关语法
HTML概念以及相关语法 HTML HTML是一种类似于(c,java,c++)之类的语言,他是用来描述网页的一种语言.通过各种标签所代表的语义来构建出一个网页,再通过浏览器的渲染功能来实现该网页的各 ...
- innobackupex 相关语法讲解【转】
innobackupex 相关语法讲解 连接服务器 The database user used to connect to the server and its password are speci ...
- 比较C++、Java、Delphi声明类对象时候的相关语法
同学们在学习的时候经常会遇到一些问题,C++.Java.Delphi他们到底有什么不一样的呢?今天我们来比较C++.Java.Delphi声明类对象时候的相关语法.希望对大家有帮助! C++中创建对象 ...
- Mysql表结构定义及相关语法
mysql语法及相关命令1.每个sql命令都需要使用分号来完成2.可以将一个命令写成多行3.可以通过\c来取消本行命令4.可以通过\g.exit.ctrl+c或者quit来退出当前客户端5.可以通过使 ...
- 详细分析SQL语句逻辑执行过程和相关语法
本文目录: 1.SQL语句的逻辑处理顺序 1.2 各数据库系统的语句逻辑处理顺序 1.2.1 SQL Server和Oracle的逻辑执行顺序 1.2.2 MariaDB的逻辑执行顺序 1.2.3 M ...
- python介绍、安装及相关语法、python运维、编译与解释
1.python介绍 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/)是一种广泛使用的解释型.高级编程.通用型编程语言,由吉多.范罗苏姆创造,第一版发布于1991年.可以视 ...
- Python--day65--模板语言之变量相关语法
Django的模板语言: 1.目前已经学过的模板语言: 2,模板语言总结: 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Djan ...
- oracle ql/sql 相关语法解析
这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELE ...
随机推荐
- List、Set、 数组等转字符串
public class Test { public static void main(String[] args) { String str = ""; // list转字符串 ...
- 【调侃】IOC前世今生(转)
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
- 使用spring-amqp结合使用rabbitmq
maven 依赖包配置如下: <dependencies> <dependency> <groupId>org.springframework.amqp</g ...
- 浅析STL allocator
一般而言,我们习惯的 C++ 内存配置操作和释放操作是这样的: class FOO{}; FOO *pf = new FOO; delete pf; 我们看其中第二行和第三行,虽然都是只有一句,当是都 ...
- bzoj3043
这道题完全没想出来,引自 http://blog.csdn.net/willinglive/article/details/38419573的题解 对于带有“将一段区间内的每个数全部加上某个值”这种操 ...
- SQL中ISNULL的使用
在敲写相关sql语句时,我们经常会遇到一些空的字符串或者是字段,这就给我们对数据库造成一定的麻烦,系统经常会提示“某值null不能转换”“插入的值不能为空”等等诸如此类的提示,isnull函数会帮助你 ...
- 使用string
public class UsingString { public static void testFindStr(String str) { System.out.p ...
- 自动化Cobbler安装
#install cobbler-server soft #date 2013.08.07 #disabled iptables and selinux /etc/init.d/iptables st ...
- maven clean 报错
eclipse在使用maven的tomcat控件编译java程序时,报错 Failed to execute goal org.apache.maven.plugins:maven-clean-plu ...
- Win8 移除右键菜单中的SkyDrive Pro选项
Step 1:进入注册表编辑器 Win + R键调出运行窗口,然后输入regedit,进入注册表编辑器. Step 2:删除下面的键值 HKEY_CLASSES_ROOT\AllFilesystemO ...