C++作用域运算符(::)

来源:互联网 发布:mysql启动报1067错误 编辑:程序博客网 时间:2024/05/18 16:16

   ::是C++里的“作用域运算符”。
比如声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成void A::f(),表示这个f()函数是类A的成员函数。
   :: 一般还有一种用法,就是直接用在全局函数前,表示是全局函数。当类的成员函数跟类外的一个全局函数同名时,在类内定义的时候,打此函数名默认 调用的是本身的成员函数;如果要调用同名的全局函数时,就必须打上::以示区别。比如在VC里,你可以在调用API函数时,在API函数名前加::。

 

如果有两个同名变量,一个是全局的,一个是局部的,那么局部的变量在其作用域拥有较高的优先权,全局变量则被屏蔽。

    那如果我希望在局部变量的作用域里使用全局变量怎么办,这时就要用到::作用域运算符了。比如:
复制代码
1 #include<iostream>
2
3  usingnamespace std;
4
5  int x;
6
7  int main()
8
9 {
10
11   int x;
12
13   x=50;
14
15   ::x=100;
16
17   cout<<"局部变量x="<<x<<endl;
18
19   cout<<"全局变量x="<<::x<<endl;
20
21   return0;
22
23 }

结果: