成員函式 (C++)
類別可以包含資料和函式。 這些函式即稱為 「 成員函式 」。 任何非靜態類別宣告中宣告的函式會被視為成員函式,而呼叫時使用的成員選取運算子 (. and –>). 當您從其他成員相同的類別的函式呼叫成員函式,則可以省略物件和成員選取運算子。 例如:
// 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 (雖然它可以是另一個類別的成員)。A 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呼叫 -> 成員選取運算子。