1. 程式人生 > >作用域限定符(::)的用法

作用域限定符(::)的用法

第一種,就是區分同名的全域性變數(或函式)和區域性變數(或函式)。

  1. #include<iostream>
  2. usingnamespace std;  
  3. int sum=0;  
  4. constint N=15;  
  5. int main()  
  6. {  
  7.     int n,a[N],sum=0;  
  8.     cin>>n;  
  9.     for(int i=0;i<n;i++)  
  10.     cin>>a[i];  
  11.     for(int i=0;i<n;i++)  
  12.     {  
  13.         if(i%2==0) sum+=a[i];  
  14.         ::sum+=a[i];  
  15.     }  
  16.     cout<<"all="<<::sum<<' '<<"odd="<<sum;  
  17.     return 0;  
  18. }  

全域性變數sum用來求陣列的全部和,區域性變數sum用來求奇數小標元素的和。

第二種,類的成員函式在類外定義時,指明該函式的作用域為該類。

  1. #include<iostream>
  2. usingnamespace std;  
  3. int calculate(int x)  
  4. {return 2*x*x+4*x+6;}  
  5. class A  
  6. {  
  7.     private:  
  8.     int a;  
  9.     public:  
  10.     int calculate();  
  11.     A(int m) {a=m;}  
  12. };  
  13. int A::calculate()  
  14. {return 2*a*a+4*a+5;}  
  15. int main()  
  16. {  
  17.     A b(5);  
  18.     cout<<::calculate(5)<<endl;  
  19.     cout<<b.calculate()<<endl;  
  20.     return 0;  
  21. }

第三種,名稱空間限定,當想輸出某名稱空間(如:namespace ns1)中成員的資料時,可以採用名稱空間名和作用域限定符::指向該成員資料。

<ol start="1" class="dp-cpp" style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 35px; padding: 0px; border: none; color: rgb(92, 92, 92); margin: 0px 0px 1px 45px !important;"><li class="alt" style="border-style: none none none solid; border-left-width: 3px; border-left-color: rgb(108, 226, 108); list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;">namespace ns1  // 名稱空間 ns1
{
<span style="white-space:pre">	</span>int a=0;
<span style="white-space:pre">	</span>double b=1;
<span style="white-space:pre">	</span>float tax()
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>return a*b
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>


<span style="white-space:pre">	</span>namespace ns2  // 巢狀的名稱空間 ns2
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>int age;


<span style="white-space:pre">	</span>}<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>
}


//  如果想輸出名稱空間 ns1 中乘員的資料,可以採用下面的方法


cout<<ns1::a<<endl;
cout<<ns1::tax()<<endl;
cout<<ns1::ns2::age<<endl;   // 需要依次指定外層和內層的名稱空間名
</li></ol>