当前位置: 首页 > 文档资料 > C++大学教程 >

3.19 一元作用域运算符

优质
小牛编辑
162浏览
2023-12-01

可以声明同名的局部变量和全局变量。C++提供一元作用域运算符(::),可以在同名局部变量的作用域中访问全局变量。一元作用域运算符不能在外层块中访问同名的局部变量。如果在作用域内没有与全局变量同名的局部变量,则可以直接访问全局变量,而不用一元作用域运算符。第6章将介绍类中使用的二元作用域运算符。

图3.24演示了当局部变量与全局变量同名时一元作用域运算符的用法。为了突出常量变量PI的局部和全局版本之间的差别,程序将其中一个声明为double.一个声明为float。

常见编程错误3.32
想用一元作用城运算符在外层块中访问非全局变量时,如果外层块中没有同名全局变量,则出现语法错误,如果有同名全局变量,则出见逻辑错误。

// Fig. 3.24: figO3_24.cpp
// Using the unary scope resolution operator
#include <iostream.h>
#include <iomanip.h>
const double PI = 3.14159265358979;
int main(){
const float PI = static_cast< float >( ::PI );
cout << setprecision{ 20 )
<<" Local float value of PI = "<< PI
<< "\nGlobal double value of PI = "<< ::PI << endl;
return 0;
}

输出结果:

Local float value of PI = 3.14159
Global double value of PI = 3.14159265358979

图3.24使用一元作用域运算符

编程技巧3.14
程序中不同用途的变量不要用相同名称。尽管不同用途的变量也可以用相同名称,但容易速成混乱。