在 C 的世界中,用“::”表示的作用域解析运算符与它的对应部分是“.”。操作员。虽然其他语言(例如 Java)将单个运算符用于各种目的,但 C 选择专门为解决成员变量和类名之间的歧义而定制的专用运算符。
C 要求单独的运算符的特殊性运算符源于语言能够定义成员变量和派生类类型共享相同名称的场景。考虑以下代码示例:
struct foo { int blah; }; struct thingy { int data; }; struct bar : public foo { thingy foo; }; int main() { bar test; test.foo.data = 5; test.foo::blah = 10; return 0; }
在此示例中,派生类 bar 中的成员变量 foo 与父类 foo 具有相同的名称。为了区分两者,C 使用范围解析运算符,允许使用“::foo::blah”唯一引用派生类。在这种情况下,这种歧义解决机制就变得至关重要。
以上是为什么 C 使用作用域解析运算符 ::?的详细内容。更多信息请关注PHP中文网其他相关文章!