首页 > 编程 > C++ > 正文

C++ namespace相关语法实例分析

2020-01-26 15:23:24
字体:
来源:转载
供稿:网友

namespace命名空间是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 = 165;  cout<<"Method 1: Jerry height: " << jerry::height <<" cm"<<endl;  //Method 2: using声明  using jerry::weight;  weight = 64;  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 = 2;  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;}

运行结果如下图所示:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表