メンバー関数 (C++)
クラスはデータと関数を含めることができます。これらの関数は 「メンバー関数と呼ばれます」。クラス宣言の中で宣言されたすべての非静的メンバー関数は関数と見なされメンバー選択演算子を使用して呼び出されます (。 と – >)。同じクラスのメンバー関数のメンバー関数を呼び出すとオブジェクトとメンバー選択演算子は省略できます。次に例を示します。
// member_functions1.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class Point
{
public:
short x()
{
return _x;
}
short y()
{
return _y;
}
void Show()
{
cout << x() << ", " << y() << "\n";
}
private:
short _x, _y;
};
int main()
{
Point pt;
pt.Show();
}
このメンバー関数はShow の他のメンバー関数の呼び出しx に注意してください y はメンバー選択演算子なしで行われます。暗黙的にこれらの呼び出しは中央の this->x() と this->y()。ただし 主要 メンバー関数Show はオブジェクト pt およびメンバー選択演算子 () を使用して 。 選択する必要があります。
クラス内で宣言された静的関数はメンバー選択演算子を使用して関数の完全修飾名を指定して呼び出すことができます (を含むクラス名)。
[!メモ]
friend のキーワードを使って宣言された関数 (別のクラスのメンバーですが) が friend で宣言されたクラスのメンバーとは見なされません。friend の宣言は以外のメンバー関数がデータを分類する必要があるアクセスを制御します。
メンバー関数を宣言して呼び出す方法のクラス宣言では :
// member_functions2.cpp
class Point
{
public:
unsigned GetX()
{
return ptX;
}
unsigned GetY()
{
return ptY;
}
void SetX( unsigned x )
{
ptX = x;
}
void SetY( unsigned y )
{
ptY = y;
}
private:
unsigned ptX, ptY;
};
int main()
{
// Declare a new object of type Point.
Point ptOrigin;
// Member function calls use the . member-selection operator.
ptOrigin.SetX( 0 );
ptOrigin.SetY( 0 );
// Declare a pointer to an object of type Point.
Point *pptCurrent = new Point;
// Member function calls use the -> member-selection operator.
pptCurrent->SetX( ptOrigin.GetX() + 10 );
pptCurrent->SetY( ptOrigin.GetY() + 10 );
}
このコードではオブジェクト ptOrigin のメンバー関数はメンバー選択演算子 (。) を使用して呼び出されます。ただしpptCurrent が指し示す – > のメンバー選択演算子を使用してオブジェクトのメンバー関数が呼び出されます。