c++变量作用域问题Scope of a name

来源:互联网 发布:新速特软件站最新版 编辑:程序博客网 时间:2024/06/07 09:08

c++程序的每一个名字,不论是变量名,函数名,类的名字等,都是有作用域的。大名鼎鼎的std就是标准命名空间,OpenCV有cv空间;是为了防止变量名称混淆而设置的作用域的一种。

一个作用域是是用{ } 包起来的代码片段,变量在这个 { } 中声明的,也就只在这个作用域中发挥功效。

嵌套作用域问题,一个作用域可以嵌套另一个作用域,可以分别称为内部作用域(inner scope)和外部(outer scope)作用域,在外部声明的名字可以在内部使用,在内部声明的不能再外部使用,看一个例子:

输出的值是:

42 0
0 0
42 0

1.第一行是在reused变量局部声明之前出现的,所以使用的是全局作用域(global scope)的变量;

2.第二行输出在reused变量局部声明之后,是局部变量的值--0;

3.第三行使用 :: 符,因为全局变量reused声明的时候没有命名空间,默认为空,使用 ::reused即可表示全局变量。


不过,话说回来,局部变量不要和全局变量一样!!!吐舌头


0 0
原创粉丝点击