1. 導入:なぜメンバアクセス演算子が必要なのか
C++では、複数のデータや機能をひとまとめにして扱う「構造体(struct)」や「クラス(class)」という仕組みを多用します。しかし、これらを定義しただけでは中身に触れることができません。そこで登場するのがメンバアクセス演算子(ドット演算子「.」)です。これを使うことで、作成したオブジェクトの中にある変数(メンバ変数)や関数(メンバ関数)を操作できるようになります。プログラムを構造化して管理するために、避けては通れない必須の知識です。
2. 基礎知識:メンバアクセス演算子とは
メンバアクセス演算子は、その名の通り「メンバ(構成要素)」に「アクセス(接続・操作)」するための記号です。
オブジェクト名とメンバ名の間に「.」を置くことで、コンパイラに対して「このオブジェクトの中にあるこの変数を使いたい」と伝えることができます。
例えば、学生のデータを管理する場合、「学生(オブジェクト)」という箱の中に「名前(メンバ変数)」というデータがあり、それを「学生.名前」と指定することで取り出すことができるのです。
3. 実装:ドット演算子の使い方
使い方は非常にシンプルです。
1. まず、構造体やクラスの型を定義します。
2. 次に、その型の実体(インスタンス)を作成します。
3. 作成したインスタンスの後に「.」を書き、続けて使いたいメンバ名を指定します。
値を代入したい場合は「インスタンス.メンバ = 値;」とし、値を取得したい場合は変数としてそのまま利用します。
4. サンプルプログラム
以下のコードは、構造体を使って簡単な商品データを管理する例です。コピーして実行してみてください。
include <iostream>
include <string>
// 商品情報をまとめた構造体を定義
struct Product {
std::string name; // 商品名
int price; // 価格
};
int main() {
// 構造体の実体(オブジェクト)を作成
Product item;
// ドット演算子を使ってメンバに値を代入
item.name = "C++入門書";
item.price = 3000;
// ドット演算子を使ってメンバの値を取得し表示
std::cout << "商品名: " << item.name << std::endl;
std::cout << "価格: " << item.price << "円" << std::endl;
return 0;
}
5. 応用・注意点:ポインタとの違いに注意
初心者が陥りやすい間違いとして、ポインタ変数との混同があります。
オブジェクトそのもの(実体)を操作するときは「.(ドット)」を使いますが、オブジェクトを指し示す「ポインタ」を扱うときは「->(アロー演算子)」を使う必要があります。
・実体の場合:obj.value = 10;
・ポインタの場合:ptr->value = 10;
もし「.(ドット)」を使ってエラーが出る場合は、操作対象がポインタになっていないかを確認してください。また、メンバが「private」設定になっている場合は外部から直接アクセスできないため、ゲッターやセッターと呼ばれる関数を経由する必要がある点も覚えておくと、現場でのコーディングがスムーズになります。

コメント