zoukankan      html  css  js  c++  java
  • c++作用域运算符---7

     原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/

      ::是C++里的“作用域运算符”。
    比如声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成void A::f(),表示这个f()函数是类A的成员函数。
       :: 一般还有一种用法,就是直接用在全局函数前,表示是全局函数。当类的成员函数跟类外的一个全局函数同名时,在类内定义的时候,打此函数名默认 调用的是本身的成员函数;如果要调用同名的全局函数时,就必须打上::以示区别。比如在VC里,你可以在调用API函数时,在API函数名前加::。

    #include<iostream>
    using namespace std;
    
    class _myclass_
    {
    private:
        int num;public:void display(const int &a);  //声明函数
    };
    void _myclass_::display(const int &a) //使用作用域运算符定义函数 { cout<<"display value is = "<<a<<endl; }
    _myclass_ _value_;
    int main() 
    {
      _value_.display(
    3);
      return 0;
    }

    如果有两个同名变量,一个是全局的,一个是局部的,那么局部的变量在其作用域拥有较高的优先权,全局变量则被屏蔽。

      那如果我希望在局部变量的作用域里使用全局变量怎么办,这时就要用到::作用域运算符了。比如:

    #include<iostream>
    usingnamespace std;
    int x=100;
    int main()
    {
        int x = 200;
        _value_.display(3);
        cout << "x is "<<x<<endl; //输出main函数中的局部变量(main函数中默认屏蔽所有全局同名变量)
        cout << "x is "<<::x<<endl; //输出全局作用域变量
        return 0;
    }
  • 相关阅读:
    BZOJ_2460_[BeiJing2011]元素_线性基
    BZOJ_4448_[Scoi2015]情报传递_主席树
    BZOJ_4004_[JLOI2015]装备购买_线性基
    BZOJ_3110_[Zjoi2013]K大数查询_整体二分+树状数组
    BZOJ_4128_Matrix_矩阵乘法+哈希+BSGS
    BZOJ_4378_[POI2015]Logistyka_树状数组
    BZOJ_2527_[Poi2011]Meteors_整体二分
    BZOJ_2738_矩阵乘法_整体二分
    BZOJ_3687_简单题_bitset
    HDU 4501
  • 原文地址:https://www.cnblogs.com/zxouxuewei/p/5728543.html
Copyright © 2011-2022 走看看