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

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

 

  ::是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;
}

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

  那若是我但愿在局部变量的做用域里使用全局变量怎么办,这时就要用到::做用域运算符了。好比: code

#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;}
 
相关文章
相关标签/搜索