一、成员函数的定义与实现
在C++中,::是作用域解析操作符,用于引用全局变量或命名空间中的变量或函数。此外,在C++中::也可用于成员函数的定义和实现中,这便是::的重载作用之一。
class MyClass {
public:
void func() const;
};
void MyClass::func() const {
// 实现函数体
}
在上述代码中,函数func的定义和实现使用了::运算符,表示func是MyClass类的成员函数。类名和函数名之间的::运算符就是成员函数的重载操作符,表示定义函数的类是MyClass。
二、命名空间中的使用
::还可用于命名空间中的同名函数或变量的区分。虽然C++中不建议使用全局变量和函数,但在某些情况下,使用全局变量和函数仍是有必要的。此时,若命名空间中的变量和全局变量变量同名,使用::关键字可以直接访问全局变量。
#include
namespace myspace {
int var = 0;
void func() {
std::cout << "namespace function" << std::endl;
}
}
int var = 1;
int main() {
std::cout << myspace::var << std::endl; // 输出:0
std::cout << ::var << std::endl; // 输出:1
myspace::func(); // 输出:namespace function
::func(); // 编译出错,未定义全局函数func
return 0;
}
三、指针变量的使用
::还可用于指针变量的使用。当指针变量被定义为类的成员变量时,为了在函数外访问该变量,需要指定作用域。
class MyClass {
public:
int var;
};
int main() {
MyClass obj;
obj.var = 1; // 通过对象访问变量
MyClass* p = &obj;
p->var = 2; // 通过指针访问变量
::p->var = 3; // 通过全局指针访问变量
return 0;
}
四、友元函数定义
::还可用于友元函数的定义,友元函数是类的友元,在类外部定义的函数可以访问类中的私有成员和保护成员。友元函数的定义和实现也使用::运算符。
class MyClass {
friend void func();
private:
int var;
};
void func() {
MyClass obj;
obj.var = 1; // 可以直接访问类中的私有成员
}
int main() {
func();
return 0;
}
五、总结
在C++中,::的重载作用可以用于成员函数的定义和实现、命名空间中同名变量和函数的区分、指针变量的使用和友元函数的定义。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/231720.html
微信扫一扫
支付宝扫一扫