• 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;
    }
  • 相关阅读:
    《企业虚拟化应用实战》笔记
    s3c2440笔记1(启动)
    reactor & proactor 笔记
    交换机选型笔记
    Intel VT-x 基本概念
    note of introduction of Algorithms(Lecture 3
    STC12C5A60S2笔记8(串口)
    STC12C5A60S2笔记7(定时器)
    bzoj 3242: [Noi2013]快餐店 章鱼图
    高精度模板
  • 原文地址:https://www.cnblogs.com/zxouxuewei/p/5728543.html
Copyright © 2020-2023  润新知