c++作用域运算符---7

 原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/

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

#include<iostream>
using namespace std;

class _myclass_
{
private:
    int num;public:void display(const int &a);  //声明函数
};
void _myclass_::display(const int &a) //使用作用域运算符定义函数 { cout<<"display value is = "<<a<<endl; }
_myclass_ _value_;
int main() 
{
  _value_.display(
3);
  return 0;
}

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

  那如果我希望在局部变量的作用域里使用全局变量怎么办,这时就要用到::作用域运算符了。比如:

#include<iostream>
usingnamespace std;
int x=100;
int main()
{
    int x = 200;
    _value_.display(3);
    cout << "x is "<<x<<endl; //输出main函数中的局部变量(main函数中默认屏蔽所有全局同名变量)
    cout << "x is "<<::x<<endl; //输出全局作用域变量
    return 0;
}
原文地址:https://www.cnblogs.com/zxouxuewei/p/5728543.html