メンバー アクセス演算子: . および ->

構文

postfix-expression:
postfix-expression.templateoptid-expression
postfix-expression->templateoptid-expression

解説

メンバー アクセス演算子 . および -> は、structunion、および class 型のメンバーを参照するために使用されます。 メンバー アクセス式は、選択したメンバーの値と型を持ちます。

メンバー アクセス式には、次の 2 つの形式があります。

  1. 最初の形式では、postfix-expression によって structclass、または union 型の値が表され、id-expression によって、指定された structunion、または class のメンバーの名前が示されます。 操作の値は id-expression の値となります。postfix-expression が左辺値の場合は左辺値となります。

  2. 2 番目の形式では、postfix-expression によって structunion、または class を指すポインターが表され、id-expression によって、指定された structunion、または class のメンバーの名前が示されます。 値は id-expression の値であり、左辺値です。 -> 演算子は、ポインターを逆参照します。 したがって、式 e->member(*(e)).member (e がポインターを表す) は、同一の結果になります (演算子 -> または * をオーバーロードする場合を除く)。

次の例に、メンバー アクセス演算子の両方の形式を示します。

// expre_Selection_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

struct Date {
   Date(int i, int j, int k) : day(i), month(j), year(k){}
   int month;
   int day;
   int year;
};

int main() {
   Date mydate(1,1,1900);
   mydate.month = 2;
   cout  << mydate.month << "/" << mydate.day
         << "/" << mydate.year << endl;

   Date *mydate2 = new Date(1,1,2000);
   mydate2->month = 2;
   cout  << mydate2->month << "/" << mydate2->day
         << "/" << mydate2->year << endl;
   delete mydate2;
}
2/1/1900
2/1/2000

関連項目

後置式
C++ の組み込み演算子、優先順位、結合規則
クラスと構造体
構造体と共用体のメンバー