分享方式:


為您的自訂類別多載 << 運算子

輸出資料流針對標準類型使用插入 (<<) 運算子。 您也可以為您的自訂類別多載 << 運算子。

範例

write 函式範例示範 Date 結構的用法。 日期是 C++ 類別的理想候選,其中的資料成員 (月、日和年) 會隱藏不顯示。 輸出資料流是顯示這種結構的邏輯目的地。 以下程式碼使用 cout 物件顯示日期:

Date dt(1, 2, 92);

cout <<dt;

若要讓 cout 可以在插入運算子之後接受 Date 物件,必須多載插入運算子以識別左邊的 ostream 物件和右邊的 Date。 多載的 << 運算子函式必須接著宣告為 Date 類別的 friend,如此它就可以存取 Date 物件中的私用資料。

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

class Date
{
    int mo, da, yr;
public:
    Date(int m, int d, int y)
    {
        mo = m; da = d; yr = y;
    }
    friend ostream& operator<<(ostream& os, const Date& dt);
};

ostream& operator<<(ostream& os, const Date& dt)
{
    os << dt.mo << '/' << dt.da << '/' << dt.yr;
    return os;
}

int main()
{
    Date dt(5, 6, 92);
    cout << dt;
}
5/6/92

備註

多載的運算子會傳回原始 ostream 物件的參考,這表示您可以合併插入:

cout <<"The date is" <<dt <<flush;

另請參閱

輸出資料流