const作用域范围

来源:互联网 发布:淘宝如何看买家评价 编辑:程序博客网 时间:2024/06/06 07:36

from C++ Primer

在全局作用域里定义非 const 变量时,它在整个程序中都可以访问。我们可以把一个非 const 变更定义在一个文件中,假设已经做了合适的声明,就可在另外的文件中使用这个变量:

      // file_1.cc      int counter;  // definition      // file_2.cc      extern int counter; // uses counter from file_1      ++counter;          // increments counter defined in file_1

 

与其他变量不同,除非特别说明,在全局作用域声明的 const 变量是定义该对象的文件的局部变量。此变量只存在于那个文件中,不能被其他文件访问。

通过指定 const 变更为 extern,就可以在整个程序中访问 const 对象:

      // file_1.cc      // defines and initializes a const that is accessible to other files      extern const int bufSize = fcn();      // file_2.cc      extern const int bufSize; // uses bufSize from file_1      // uses bufSize defined in file_1      for (int index = 0; index != bufSize; ++index)            // ...

本程序中,file_1.cc 通过函数 fcn 的返回值来定义和初始化 bufSize。而 bufSize 定义为 extern,也就意味着 bufSize 可以在其他的

文件中使用。file_2.cc 中 extern 的声明同样是 extern;这种情况下,extern 标志着 bufSize 是一个声明,所以没有初始化式。

0 0
原创粉丝点击