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;}
 
相關文章
相關標籤/搜索