scope 演算子

Global & Local と private/public の scope 演算子です。

前田稔の超初心者のプログラム入門

Global Area & Local Area の scope 演算子

  1. ソースプログラムです。
    ファイル名 説明
    Scope3.cpp scope 演算子
  2. スコープ(scope) 演算子の説明です。
    C++でまず面食らうのがスコープ演算子(::)です。
    解かれば何と言うことは無いのですが始めて見たときは恐怖を覚えます。(^_^;)
  3. グローバル領域(関数の外)とローカル領域(main 関数の中)で領域 x が宣言されています。
    普通に x を使うとローカル領域の x が参照されます。
    ::x を付けるとグローバル領域の x が参照されます。
    /*★ scope 演算子       前田 稔  ★*/
    #include <stdio.h>
    
    int     x= 100;
    
    int main(void)
    {   int x= 200;
    
        printf("内部の x= %d\n", x);
        printf("外部の x= %d\n", ::x);
    
        return 0;
    }
    

Object Class の scope 演算子

  1. Object Class の説明は、構造体の解説及び 構造体で private を使う を参照して下さい。
    public 領域と private 領域は新しく取り入れられたC++の機能です。
    public はどこからでも自由に参照できるのに対して、private は決められた場所からしか参照できません。
    構造体では規定値が public になりますが、class では private になっています。
  2. class CLAS を宣言しています。
    private 領域 val は class の外からは参照できません。
    そこで val に値を設定するメンバ関数 set() と、val の値を参照するメンバ関数 get() を定義しています。
    set() と get() の頭に scope 演算子(CLAS::)が付けられていることに注目して下さい。
    class  CLAS
    { private:
        int     val;
      public:
        void    set(int);
        int     get();
    };
    void  CLAS::set(int v)
    {   val = v;
    };
    int  CLAS::get()
    {   return val;
    }
    
  3. class CLAS を使った main() 関数です。
    clas.set(30); で val に値を設定して、clas.get() で値を参照します。
    CLAS     clas;
    
    int main(void)
    {
        clas.set(30);
        printf("clas.val= %d\n", clas.get());
        return 0;
    }
    

超初心者のプログラム入門(C/C++)