本段测试代码包括如下内容:

(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;
}

运行结果为:

最新文章

  1. [WPF]控件应用多个样式
  2. Angular权威指南学习笔记(转)
  3. SQLdiag-配置文件-PerfmonCollector
  4. Hbase之批量删除数据
  5. Struts2 - 传值
  6. C# 之 Math取整
  7. ASP.NET 导入EXCEL文档
  8. 用户输入密码隐藏之getpass的使用
  9. 备注: ubt 16.04 安装 gtx 1060 --- 成功运行 tensorflow - gpu
  10. [转] webpack中配置Babel
  11. OllyDbg使用笔记
  12. Ymodem协议说明
  13. 虚拟机安装ssh,关闭防火墙
  14. Unable to instantiate Action, xxxAction, defined for 'xxxAction' in namespace '/'xxx
  15. linux每日命令(33):diff命令
  16. Tomcat7目录结构详解
  17. 苹果电脑获取Android Studio的发布版SHA1和开发版SHA1
  18. ServiceStack DotNet Core前期准备
  19. Adaboost新理解
  20. java中的实例化

热门文章

  1. Struts2 cookie的存取
  2. jsoup技术抓取网页数据大全
  3. 【HDOJ】3085 Nightmare Ⅱ
  4. 牛逼的bootcss之buttons
  5. 【转】Java 枚举7常见种用法
  6. 字符串(后缀自动机):COGS 2399. 循环同构
  7. 【模拟】Codeforces 691A Fashion in Berland
  8. Eclipse集成环境中Android SDK下载及更新失败解决方案
  9. poj2774 Long Long Message(后缀数组)
  10. 重启adb服务