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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM