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

 更新时间:2014年08月19日 10:24:36   投稿:shichen2014  
这篇文章主要介绍了C++ namespace相关语法实例分析,对C++初学者有很好的参考借鉴价值,需要的朋友可以参考下

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

运行结果如下图所示:

相关文章

  • 深入理解双指针的两种用法

    深入理解双指针的两种用法

    本篇文章是对双指针的两种用法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 浅析C语言中堆和栈的区别

    浅析C语言中堆和栈的区别

    堆和栈都是一种数据项按序排列的数据结构。在C语言中是非常重要的知识点,接下来通过本文给大家介绍C语言中堆和栈的区别,感兴趣的朋友一起看下吧
    2016-06-06
  • 最新C/C++中的new和delete的实现过程小结

    最新C/C++中的new和delete的实现过程小结

    这篇文章主要介绍了C/C++中的new和delete的实现过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C++设计模式之CRTP的使用

    C++设计模式之CRTP的使用

    CRTP全称是curious recurring template pattern,即奇异递归模版模式,是一种c++的设计模式,精巧地结合了继承和模板编程的技术,下面就跟随小编一起来学习一下CRTP的使用吧
    2023-10-10
  • 利用C语言实现猜数字游戏

    利用C语言实现猜数字游戏

    这篇文章主要为大家详细介绍了利用C语言实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • C++深入讲解对象的销毁之析构函数

    C++深入讲解对象的销毁之析构函数

    构造函数在创建对象时被系统自动调用,而析构函数(Destructor)在对象被撤销时被自动调用,相比构造函数,析构函数要简单的多
    2022-04-04
  • C语言内存函数 memcpy,memmove ,memcmp

    C语言内存函数 memcpy,memmove ,memcmp

    这篇文章主要介绍了C语言内存函数 memcpy,memmove ,memcmp,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • C++实现电子时钟效果

    C++实现电子时钟效果

    这篇文章主要为大家详细介绍了C++实现电子时钟效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C/C++的文件IO函数你知道吗

    C/C++的文件IO函数你知道吗

    这篇文章主要为大家详细介绍了C/C++的文件IO函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 基于VC中使用ForceInclude来强制包含stdafx.h的解决方法

    基于VC中使用ForceInclude来强制包含stdafx.h的解决方法

    本篇文章是对VC中使用ForceInclude来强制包含stdafx.h的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05

最新评论