码迷,mamicode.com
首页 > 编程语言 > 详细

C++作用域

时间:2016-01-22 10:25:58      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

作用域通常和变量捆绑在一起,限定了变量可用范围,同时也规定了变量的生命周期:何时创建、何时销毁。作用域通常分为:全局作用域和局部作用域。

全局作用域(全局变量)

在所用函数体外部定义的变量就是全局变量,具有全局作用域。它在main函数执行前创建,mian函数结束后销毁。下面的代码演示了全局变量的创建和销毁:

   1:  class World 
   2:  {
   3:  public:
   4:      World()
   5:      {
   6:          std::cout << "Hello world.\n" ;
   7:      }
   8:   
   9:      ~World()
  10:      {
  11:          std::cout << "Goodbye.\n";
  12:      }
  13:  };
  14:   
  15:  World theWorld ;
  16:   
  17:  int main()
  18:  {
  19:      std::cout << "Hello from main.\n" ;
  20:      return 0 ;
  21:  }

这段代码的执行结果是 :

技术分享

theWorld对象在main函数执行前被创建,main结束后销毁。

 

局部作用域(局部变量)

局部作用域是一对大括号包围的区域,局部变量在在程序流进入其作用域时被创建,退出作用域时被销毁。下面一段代码演示了局部变量的创建和销毁:

   1:  class World 
   2:  {
   3:  public :
   4:      World(int id)
   5:          :identifier(id)
   6:      {
   7:          std::cout << "Hello from " << identifier << ".\n" ;
   8:      }
   9:   
  10:      World ()
  11:          :identifier(0)
  12:      {
  13:          std::cout << "Hello from default constructor .\n" ;
  14:      }
  15:      ~World()
  16:      {
  17:          std::cout << "Goodbye from " << identifier << ".\n" ;
  18:      }
  19:   
  20:  private:
  21:      const int identifier ;
  22:  };
  23:   
  24:  World theWorld ;
  25:   
  26:  int main()
  27:  {
  28:      World smallworld(1);
  29:   
  30:      for(int i = 2 ; i < 4 ; i ++)
  31:      {
  32:          World aWorld(i);
  33:      }
  34:   
  35:      World oneMoreWorld(4);
  36:  }

执行结果为:

技术分享

说明:

  1. 为类World添加了一个常量成员identifier,用来标识World的不同实例。identifier在构造函数的前导中初始化。
  2. 执行时,在main前调用默认构造函数创建theWorld
  3. 进入main函数,首先创建smallWorld(identifier = 1),smallWorld的是main函数内的局部变量,作用域是整个main函数
  4. 进入for循环局部作用域,创建和销毁了identifier = 2和identifier = 3的World两个实例
  5. for作用域结束,进入到main局部作用域,创建局部变量oneMoreWorld (identifier = 4)
  6. main作用域结束,销毁main作用域内的局部变量。销毁局部变量时和创建的顺序相反,即先销毁oneMoreWorld,然后是smallWorld
  7. 最后程序执行到末尾,销毁全局变量theWorld.

C++作用域

标签:

原文地址:http://www.cnblogs.com/shouce/p/5150159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!