一、成员函数的定义与实现
在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