c++中的 域解析运算符::


在C++中,:: 是作用域解析运算符,用于指定命名空间、类、结构体、枚举或命名空间成员的作用域。

以下是 :: 的几种常见用法:


1.命名空间的作用域解析:

namespace MyNamespace {
    int value = 42;
}

int main() {
    int value = 10;
    std::cout << value << std::endl; // 输出局部变量 value 的值:10
    std::cout << MyNamespace::value << std::endl; // 输出 MyNamespace 命名空间中的 value 的值:42
    return 0;
}

在上述示例中,我们定义了一个命名空间 MyNamespace,其中包含一个整数变量 value。在 main 函数中,我们声明了一个同名的局部变量 value。通过使用 ::,我们可以在 main 函数中显式地指定要使用的变量是局部变量还是命名空间中的变量。


2.类成员的作用域解析:

class MyClass {
public:
    int value = 5;
    void printValue() {
        int value = 10;
        std::cout << value << std::endl; // 输出局部变量 value 的值:10
        std::cout << this->value << std::endl; // 输出类成员 value 的值:5
        std::cout << MyClass::value << std::endl; // 也可以使用类名进行作用域解析
    }
};

int main() {
    MyClass obj;
    obj.printValue();
    return 0;
}

在上述示例中,我们定义了一个名为 MyClass 的类,其中包含一个公有成员变量 value。在 printValue 成员函数中,我们声明了一个同名的局部变量 value。使用 this->value 或 MyClass::value 通过作用域解析运算符可以访问到类成员变量而不是局部变量。


3.命名空间的嵌套:

namespace Outer {
    int value = 42;
    namespace Inner {
        int value = 10;
    }
}

int main() {
    std::cout << Outer::value << std::endl; // 输出 Outer 命名空间中的 value 的值:42
    std::cout << Outer::Inner::value << std::endl; // 输出 Inner 命名空间中的 value 的值:10
    return 0;
}

在上述示例中,我们定义了一个命名空间 Outer,其中包含一个整数变量 value。在 Outer 命名空间内部,我们又定义了一个命名空间 Inner,其中也包含一个整数变量 value。使用 :: 运算符可以在嵌套命名空间中访问到相应的变量。

声明:BenBonBen博客|版权所有,违者必究|如未注明,均为原创

转载:转载请注明原文链接 - c++中的 域解析运算符::


过去太迟,未来太远,当下最好