C++作用域
2016-03-08 00:11
357 查看
作用域通常和变量捆绑在一起,限定了变量可用范围,同时也规定了变量的生命周期:何时创建、何时销毁。作用域通常分为:全局作用域和局部作用域。
在所用函数体外部定义的变量就是全局变量,具有全局作用域。它在main函数执行前创建,mian函数结束后销毁。下面的代码演示了全局变量的创建和销毁:
这段代码的执行结果是 :
![](http://images.cnitblog.com/blog/439761/201402/191654097613584.png)
theWorld对象在main函数执行前被创建,main结束后销毁。
局部作用域是一对大括号包围的区域,局部变量在在程序流进入其作用域时被创建,退出作用域时被销毁。下面一段代码演示了局部变量的创建和销毁:
执行结果为:
![](http://images.cnitblog.com/blog/439761/201402/191654106054241.png)
说明:
为类World添加了一个常量成员identifier,用来标识World的不同实例。identifier在构造函数的前导中初始化。
执行时,在main前调用默认构造函数创建theWorld
进入main函数,首先创建smallWorld(identifier = 1),smallWorld的是main函数内的局部变量,作用域是整个main函数
进入for循环局部作用域,创建和销毁了identifier = 2和identifier = 3的World两个实例
for作用域结束,进入到main局部作用域,创建局部变量oneMoreWorld (identifier = 4)
main作用域结束,销毁main作用域内的局部变量。销毁局部变量时和创建的顺序相反,即先销毁oneMoreWorld,然后是smallWorld
最后程序执行到末尾,销毁全局变量theWorld.
最近在看《程序员修炼之道》,里面说:“程序员向别人解释他所做的事情都会有困难。”。自己知道,但是写出来或者讲述给别人,对于我来说确实有点困难。写篇博客都费劲…
![](http://images.cnitblog.com/blog/439761/201402/191654109951827.png)
,中学时候的语文没学好啊。以后要加强锻炼,坚持写下去!
FROM: http://www.cnblogs.com/wangguchangqing/p/3556244.html
全局作用域(全局变量)
在所用函数体外部定义的变量就是全局变量,具有全局作用域。它在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: }
这段代码的执行结果是 :
![](http://images.cnitblog.com/blog/439761/201402/191654097613584.png)
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: }
执行结果为:
![](http://images.cnitblog.com/blog/439761/201402/191654106054241.png)
说明:
为类World添加了一个常量成员identifier,用来标识World的不同实例。identifier在构造函数的前导中初始化。
执行时,在main前调用默认构造函数创建theWorld
进入main函数,首先创建smallWorld(identifier = 1),smallWorld的是main函数内的局部变量,作用域是整个main函数
进入for循环局部作用域,创建和销毁了identifier = 2和identifier = 3的World两个实例
for作用域结束,进入到main局部作用域,创建局部变量oneMoreWorld (identifier = 4)
main作用域结束,销毁main作用域内的局部变量。销毁局部变量时和创建的顺序相反,即先销毁oneMoreWorld,然后是smallWorld
最后程序执行到末尾,销毁全局变量theWorld.
总结
最近在看《程序员修炼之道》,里面说:“程序员向别人解释他所做的事情都会有困难。”。自己知道,但是写出来或者讲述给别人,对于我来说确实有点困难。写篇博客都费劲…![](http://images.cnitblog.com/blog/439761/201402/191654109951827.png)
,中学时候的语文没学好啊。以后要加强锻炼,坚持写下去!
FROM: http://www.cnblogs.com/wangguchangqing/p/3556244.html
相关文章推荐
- C++(学习笔记)三、引用 和 指针
- 线性回归,最小二乘法 C语言实现
- C/C++内存泄漏及检测
- C++结构到类的演变
- C++ 运算符重载之把类对象当着函数名使用
- 【日常】漫谈bsod
- 从尾到头打印链表
- 【C语言】实现对一个8bit数据(unsigned char)类型的指定位的置0或置1操作,并保持其他位不变
- C语言,程序设计
- C语言 百炼成钢18
- 【总结】C++静态成员变量的特性总结及测试用例
- 8. String to Integer (atoi) ---Leetcode
- ubuntu下编写编译C++程序
- C++第1次实验(两个数的和与差)
- ubuntu下利用gcc编译C语言程序
- c++双链表【构造函数、运算符重载、析构函数、增删查改及逆置等】
- 类的前向声明
- c++宽字符处理
- C++explicit的用法
- C++学习之构造函数、析构函数