通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量,看看下面的例子吧:
#include
using namespace std;
int avar=10;
int main();
{
int avar;
avar=25;
cout<<"avar is "<
}
程序的输出结果是 avar is 25
此时,在main函数的输出语句中,使用的变量avar是main函数内定义的局部变量,因此结果为局部变量的值。如如果我们希望在局部变量的作用域内使用同名的全局变量,可以在该变量前加上“::”,此时::avar代表全局变量,::就是作用域运算符,看下面的例子:
#include
using namespace std;
int avar;
int main();
{
int avar;
avar=25;
::avar=10;
cout<<"local avar = "<
}
结果是:
local avar =25
global avar =10
重这个例子可以看出,作用域运算符可以用来解决局部变量与全局变量的重名问题,即在局部变量的作用域内,可用::对被屏蔽的同名的全局变量进行访问。
std:using cout;
std:using cin;
等等,用来标明一个变量或函数属于哪个类里的,在如:
class A{
int f();
};
int A::f()
{}
用来标明f函数是属于A类的,如果不加A::,那么f函数就不是类A的函数。
class CLASS
{
public:
void fun();//类CLASS中的函数fun的声明
};
void CLASS::fun()//因为fun是CLASS中的,所以用作用域运算符::
{
函数fun的定义
}
类的成员函数在类体外实现时,例::
class A
{
int i;
int getnum();
}
//在类体外实现这个成员函数
int A ::getnum(){return i;}