StupidBeauty
??Read times:20????Posted at:Mon Oct 2 05:07:59 2017?? - no title specified

《C++面向对象软件设计及构建》文章翻译:2.8作用域,2.8 Scope

变量或对象的作用域,表示的是,在程序中,该个对象或对象处于可见状态(也就是说,在那个区域中,该变量或对象可被操作)的区域。在之前小节中使用的那些对象,它们的作用域,与那些用来对它们进行命名的变量的作用域相同。在本小节中,会说明作用域对于对象的影响。在 下一 小节中,会说明另一种不同的创建对象的方式,那种方式受到作用域的影响效果是不同的。

作用域,可以是全局的,也可以是局部的。带有全局作用域的对象,是以全局变量的方式来声明的,它可以在程序中任何地方被访问到。全局对象,是在程序开始执行之前就会被构造,并在程序正常结束之后再被销毁。带有局部作用域的对象,是在它们被声明的地方构造的,并会在控制流到达包含着它们的声明的程序单位(函数、方法、代码块)的末尾部分时被销毁。

以下示例中,展示了全局和局部作用域的区别,其中, globalWindow 对象带有全局作用域 可以在函数function 内部访问到它,可以在for 循环内部访问到它,可以在then 语句内部访问到它。 functionWindow 对象 ,带有一个局部作用域,即,该函数的函数体。类似 地, loopWindow 对象 ,其作用域被限制在for 循环内部。 ifWindow 对象 ,它的局部作用域,被限制在if 结构的then 语句中。

Frame globalWindow;                  // 全局作用域

void function() {

Frame functionWindow;           // functionWindow 作用域开始

...

for( int i=0; i<10; i++) {

Frame loopWindow;            // loopWindow 的作用域开始

...

if (i < 5) {

Frame ifWindow;      // ifWindow 的作用域开始

...

}                       // ifWindow 的作用域结束

}                               // loopWindow 的作用域结束

}                                    // functionWindow 的作用域结束

带有全局作用域的对象,在整个程序的运行期间都存在,而带有局部作用域的对象则并非如此。例如,functionWindow 对象,在控制流进入到该函数时,会被创建。而在控制流离开该函数时则会被销毁,具体的控制流离开的方法,包括,通过return 语句离开,或者,代码就是执行到达了的末尾。类 似地,loopWindow 对象,会在每次循环中被构造及销毁。ifWindow对象,在进入then 语句时被构造,在到达then 语句末尾时被销毁。

多吃点身体好

未知美人

- no title specified

漂亮的笨蛋浏览器/2017.10.8/版本

 
??Like this article? Give us some tips.??