Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C++

C++の「::」の記載の意味について

投稿日:2021年9月16日 更新日:

 

<目次>

(1) C++の「::」の記載の意味について
 (1-1) 「::」の意味は?
 (1-2) サンプル①:スコープ演算子「::」を使ってグローバル変数にアクセス
 (1-3) サンプル②:スコープ演算子「::」を使って関数にアクセス
 (1-4) 補足

(1) C++の「::」の記載の意味について

C++で「XXXXXX::YYYYY()」のような記述を見たことがありますでしょうか?今回はこの「::」の意味についてご紹介します。

(1-1) 「::」の意味は?

「::」は「スコープ解決演算子」と呼ばれ、「::」の後に記述される内容(コンストラクタやメソッド等)がどこの「名前空間」や「クラス」に所属するか?を明示的に記述する際に用いる記号です。内部的にはコンパイル時にコンパイラに対して、どの「クラス/名前空間」を見れば良いか?を教えます。
 
例えば、次の例では「Fruits::」が名前空間を表し、「Banana()」がコンストラクタを表しています。
 
(例)
Fruits::Banana()
 
そして、これらを合わせた「Fruits::Banana()」を併せて「修飾名」と呼びます。
 

(1-2) サンプル①:スコープ演算子「::」を使ってグローバル変数にアクセス

最初のサンプルでは「::」を使って変数にアクセスするサンプルをご紹介します。同じ名前「age」のグローバル変数とローカル変数を用意し、グローバルの方は「::age」でアクセスし、ローカルの方は「age」とアクセスしています。つまり「::」はグローバルスコープを表しているという事が確認できます。
 
(サンプル①)
 
#include <iostream>
#include <string>
using namespace std;

//# グローバルな変数
int age = 21;

int main() {
  //# ローカルな変数
  int age = 18;

  cout << "グローバル変数の値:" << ::age << endl;;
  cout << "ローカル変数の値:" << age << endl;;
  return 0;
}
 
(図121)
 

(1-3) サンプル②:スコープ演算子「::」を使って関数にアクセス

次のサンプルでは「::」を使って関数にアクセスするサンプルをご紹介します。同じ名前の関数「calcPrice」をFruitクラスとAppleクラスにそれぞれ定義し、Fruitの方は「Fruit::calcPrice」とアクセスし、Appleの方は「Apple::calcPrice」とアクセスします。これにより「::」の前で指定したクラスに属する関数にアクセスしている事が確認できます。
 
(サンプル②)
#include 
#include 
using namespace std;

//# 親クラス
class Fruit {

  //# 親クラス内のメソッド
  public:
    static void calcPrice(int amount) {
      cout << "フルーツの値段:" << amount * 100 << endl;
    }
};

//# 親クラスを継承したクラス
class Apple : public Fruit {

  //# 親クラスを継承したクラス内のメソッド
  public:
    static void calcPrice(int amount) {
      cout << "リンゴの値段:" << amount * 200 << endl;
    }
};

int main() {

  Fruit::calcPrice(5);
  Apple::calcPrice(5);
  return 0;
}
(図131)
 

(1-4) 補足

「::」の前に何も指定しない場合は「グローバル名前空間」を参照します。例えば「std::cout」を単に「cout」と書いた場合、coutはグローバル名前空間には定義されていないため、エラーになります。あるいは名前空間の使用を宣言(例:「using namespace std;」と記述すれば「std::」を省略する事ができます。
 

Adsense審査用広告コード


Adsense審査用広告コード


-C++

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

C++のポインタとは?概念や基本的な使い方をご紹介

  <目次> (1) C++のポインタとは?概念や基本的な使い方をご紹介  (1-1) はじめに  (1-2) ポインタとは? (1) C++のポインタとは?概念や基本的な使い方をご紹介 「 …

C++の構造体とは?の作り方や使い方について

  <目次> (1) C++の構造体とは?の作り方や使い方について  (1-1) 構造体とは?  (1-2) サンプルプログラム  (1-3) 構造体の変数を定義する方法  (1-4) 構造 …

C++の「->」(アロー演算子)とは?意味や使い方をご紹介

  <目次> (1) C++の「->」(アロー演算子)とは?意味や使い方をご紹介  (1-1) C++の「->」(アロー演算子=arrow operator)とは?  (1-2) …

C++をLinuxでコンパイルする方法について

  <目次> (1) C++をLinuxでコンパイルする方法について  (1-1) STEP0:【事前準備】ターミナル機能の準備(ターミナル、Teraterm、Putty)  (1-2) S …

C++の共用体とは?構造体との違いや使用方法について

  <目次> (1) C++の共用体とは?構造体との違いや使用方法について  (1-1) 共用体とは?構造体との違いは?  (1-2) 共用体の定義方法、変数定義方法、初期化方法  (1-3 …

  • English (United States)
  • 日本語
Top