作用域运算符

一、::

  1. 代码块的作用域。在函数内如果有一个与全局变量重名的变量,可以用 ::a 的形式访问(a是全局变量名)。例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include<iostream>
    using namespace std;
    int a=1;
    int main()
    {
    int a=2;
    cout<<a<<::a;
    return 0;
    }

​ 的结果是 21 。

  1. 类的静态成员访问。访问类的静态成员时,要采用 class_name::static_member_name 的方式访问。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    用于表示类的成员函数

    class Student
    {
    public:
    int age_;
    string name_;
    void setAge(int age);
    int getAge();
    };

    void Student::setAge(int age) //域运算符
    {
    age_ = age;
    }

    int Student::getAge() //域运算符
    {
    cout<<age_<<endl;
    return age_;
    }
  2. 命名空间成员访问。访问命名空间中的成员时,要用 namespace_name::member_name 的方式访问。当然,也可以用 using 关键字省去命名空间名和作用域运算符。

  3. 枚举类型关键字访问。如果有一个枚举类型叫做 Enum ,其中有一个 one 关键字,可以用 Enum::one 来访问。但是,直接写 one 也是有效的,所以一般不用加上 Enum:: 。