原創博客:轉載請標明出處: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;}