カテゴリ: C++ 更新日: 2026/02/27

C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ

メンバアクセス演算子 (., ->, ::)
メンバアクセス演算子 (., ->, ::)

先生と生徒の会話形式で理解しよう

生徒

「C++の本を読んでいたら、ドットとか矢印とか、コロンが二つ並んだ記号が出てきました。記号ばかりで混乱しています…」

先生

「それはメンバアクセス演算子と呼ばれるものです。クラスや構造体の中身を使うために必要な大切な記号ですよ。」

生徒

「そもそも、クラスとかメンバって何ですか?」

先生

「では、パソコンを触ったことがない人でも分かるように、最初から順番に説明していきましょう。」

1. メンバアクセス演算子とは?

1. メンバアクセス演算子とは?
1. メンバアクセス演算子とは?

メンバアクセス演算子とは、C++でクラス構造体の中にあるデータや機能を使うための記号です。代表的なものが「.(ドット)」「->(アロー)」「::(スコープ解決演算子)」です。

クラスや構造体は「設計図」、その中にある変数や関数は「部品」と考えてください。メンバアクセス演算子は、「その部品を取り出すための道具」です。

C++の演算子まとめの中でも、これらはオブジェクト指向プログラミングの基本として、とても重要な役割を持っています。

2. ドット演算子(.)の基本的な使い方

2. ドット演算子(.)の基本的な使い方
2. ドット演算子(.)の基本的な使い方

ドット演算子(.)は、一番よく使われるメンバアクセス演算子です。変数として作ったクラスや構造体の中身を使うときに使います。

例えるなら、「人の名前」や「人の年齢」を確認するときに、「人.名前」「人.年齢」と指定するような感覚です。


#include <iostream>

struct Person {
    int age;
};

int main() {
    Person p;
    p.age = 20;
    std::cout << p.age << std::endl;
    return 0;
}

20

この例では、Personという構造体の中にあるageというメンバ変数に、ドット演算子を使ってアクセスしています。

3. アロー演算子(->)の役割

3. アロー演算子(->)の役割
3. アロー演算子(->)の役割

アロー演算子(->)は、ポインタを使ってクラスや構造体にアクセスするときに使います。ポインタとは、「場所を指し示す住所」のようなものです。

「この箱はどこにありますか?」と住所だけ渡されて、その箱の中身を取り出すイメージです。そのときに使うのがアロー演算子です。


#include <iostream>

struct Person {
    int age;
};

int main() {
    Person p;
    Person* ptr = &p;
    ptr->age = 30;
    std::cout << ptr->age << std::endl;
    return 0;
}

30

ポインタを使う場合はドット演算子ではなく、必ずアロー演算子を使うと覚えておきましょう。

4. ドット演算子とアロー演算子の違い

4. ドット演算子とアロー演算子の違い
4. ドット演算子とアロー演算子の違い

ドット演算子とアロー演算子の違いは、「直接持っているか」「住所だけ持っているか」の違いです。

直接そのデータを持っている場合はドット演算子、ポインタ経由でアクセスする場合はアロー演算子を使います。


Person p;
Person* ptr = &p;

p.age = 25;      // ドット演算子
ptr->age = 40;  // アロー演算子

実は、アロー演算子は「(*ptr).age」を省略した書き方です。初心者はこの仕組みを知っておくと混乱しにくくなります。

5. スコープ解決演算子(::)とは?

5. スコープ解決演算子(::)とは?
5. スコープ解決演算子(::)とは?

スコープ解決演算子(::)は、「どこに属しているか」を明確にするための演算子です。クラス名や名前空間、グローバル変数を指定するときに使います。

学校で言うと、「1年1組の山田さん」とフルネームで指定するようなものです。


#include <iostream>

class Sample {
public:
    static int value;
};

int Sample::value = 100;

int main() {
    std::cout << Sample::value << std::endl;
    return 0;
}

100

このように、クラスの外からクラスの中身を指定するときにスコープ解決演算子が使われます。

6. ::は名前空間でも使われる

6. ::は名前空間でも使われる
6. ::は名前空間でも使われる

スコープ解決演算子は、名前空間という仕組みでも使われます。名前空間とは、同じ名前がぶつからないようにするためのグループ分けです。

std::coutの「std」も名前空間で、「coutはstdというグループに属しています」という意味になります。


#include <iostream>

int main() {
    std::cout << "Hello C++" << std::endl;
    return 0;
}

C++の演算子まとめを学ぶうえで、::は必ず何度も登場する重要な演算子です。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

メンバアクセス演算子で多いミスは、「ポインタなのにドットを使う」「普通の変数なのにアローを使う」ことです。

まずは「これは住所か?実体か?」と自分に問いかけるクセをつけると、.と->の使い分けが自然にできるようになります。

C++初心者のうちは、コードを声に出して読むのもおすすめです。「ptrが指している先のage」と読めるようになると理解が一気に深まります。

カテゴリの一覧へ
新着記事
New1
C++
C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ
New2
Rust
Rustの文字列を極める!&str(文字列スライス)の基本概念とString型との違い
New3
C++
C++のキャスト演算子を完全解説!dynamic_cast・static_cast・const_cast・reinterpret_castを初心者向けに説明
New4
C++
C++開発のIDE選びを完全ガイド!初心者でもわかるCLion・Eclipse CDT・Qt Creator比較
人気記事
No.1
Java&Spring記事人気No1
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.2
Java&Spring記事人気No2
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.3
Java&Spring記事人気No3
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.4
Java&Spring記事人気No4
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.5
Java&Spring記事人気No5
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.6
Java&Spring記事人気No6
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.7
Java&Spring記事人気No7
C++
C++リンカとコンパイラのオプション設定を完全ガイド!初心者にもわかる開発環境の基礎
No.8
Java&Spring記事人気No8
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作