friend函式

類別的私有成員只能被同一個類別的成員函式存取,不可以直接由外界進行存取,然而有些時候,我們希望私有成員給某些外部函式來存取,這時可以設定類別的好友(friend)函式,只有friend函式可以直接存取此類別的私有成員。

下面程式有個Point類別,有兩個私有成員m_x和m_y,將函式showPoint()加上關鍵字friend,該函式可以直接存取Point的私有成員。

#include<iostream>
using namespaces td;

class Point{
private:
    int m_x;
    int m_y;
public:
    Point(int x, int y);
    friend void showPoint(const Point &pt);
};
void showPoint(const Point &pt);

int main() {
    Point myPoint(3,4);
    showPoint(myPoint);
    system("PAUSE");
    return 0; 
}

Point::Point(int x, int y){
    m_x = x;
    m_y = y;
}
void showPoint(const Point &pt){
    cout << "(" << pt.m_x << "," << pt.m_y << ")" << endl;
}