::就是域名解析符!
返回值类型名 类名::函数成员名(参数表)
{
函数体。
}
这个是在类内声明函数后在类外定义的一种方法!
如果不加"类名::"的话,编译系统就不会知道你的函数属于哪个类(可以和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没有声明,会出错的