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

来源:互联网 发布:网络综艺节目不好 编辑:程序博客网 时间:2024/06/06 08:29

第一种,就是区分同名的全局变量(或函数)和局部变量(或函数)。

[cpp] view plain copy
  1. #include<iostream>  
  2. using namespace std;  
  3. int sum=0;  
  4. const int 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用来求奇数小标元素的和。

第二种,类的成员函数在类外定义时,指明该函数的作用域为该类。

[cpp] view plain copy
  1. #include<iostream>  
  2. using namespace 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>


1 0
原创粉丝点击