3.19 一元作用域运算符
优质
小牛编辑
176浏览
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
程序中不同用途的变量不要用相同名称。尽管不同用途的变量也可以用相同名称,但容易速成混乱。