域名解析符::

::就是域名解析符!
返回值类型名 类名::函数成员名(参数表)
{
函数体。
}
这个是在类内声明函数后在类外定义的一种方法!
如果不加"类名::"的话,编译系统就不会知道你的函数属于哪个类(可以和Java的this关键字做对比,this关键字用于引用成员变量,用以区别方法体中的局部变量)
另外,这样定义函数一定要在类中声明之后,说明它是类的成员函数才可以!
在类内声明的时候就不需要::了,直接 返回值类型 函数名(参数表) 就可以了!
1. ::域作用符,用来引用全局的变量、函数等  
 比如     

 int  i  =  0;   
 void  test()  
 {

     int   i  =   3;   
      cout<<i;                     //输出函数中的局部变量i   
      cout<<::i;                  //输出全局变量i  
 }


 
 ::的作用非常简单,就是当局部变量和全局变量名字重叠的时候,指定某变量一定是来自全局变量。

另外一个例子:

#include<iostream>
 
using namespace std;
 
int result = 100;
 
int main(){
    
    int result = 10;
 
    if(true){
        int result = 1;
        cout << ::result;//输出成员变量result的值,而不是局部变量
    }
 
    system("pause");
    return 0;
}

其输出结果是100


2. 域作用符,用来引用特定的函数或变量。比如说对类中的全局变量的引用;引用上一作用域对象(变量)。
3. 作用域运算符,指定某个范围内的成员,比如  

 class  A  
 {  
 public:  
    int   bbb();  
    //可以在类里面定义bbb,当你在类外面定义的时候就要指定他是属于哪个类的成员函数  
 };  
 int  A::bbb()  
 {  
     cout  <<  "类的外部定义";  
 }  


 如果没有int  A::bbb()只是写了int  bbb()的话就会说bbb没有声明,会出错的
 

猜你喜欢

转载自blog.csdn.net/weixin_38664232/article/details/86504582