C++ 程式過載提取運算子


假設我們有一個 Person 類,它有兩個屬性 first_name 和 last_name。它還有兩個方法 get_first_name() 和 get_last_name() 分別用於檢索或設定名和姓。我們必須過載提取運算子 (<<),以便使用 cout 語句列印名和姓。

因此,如果輸入是帶有名和姓("Sumit"、"Ray")的 person 物件,則輸出將是名 - Sumit,姓 - Ray。

為解決此問題,我們將遵循以下步驟 -

  • 要過載提取運算子,應該在類外部定義它

  • 返回型別將是 ostream 引用

  • 輸入引數是 ostream 引用變數 os 和物件引用變數

  • 使用 os 按正確順序提取物件的所有部分

  • 返回 os 物件引用。

示例

讓我們參照以下實現以更好地理解 -

#include <iostream>
using namespace std;
class Person {
    private:
        string f_name;
        string l_name;
    public:
        Person(string first_name, string last_name) : f_name(first_name), l_name(last_name) {}
        string& get_first_name() {
          return f_name;
        }
        string& get_last_name() {
          return l_name;
        }
};
ostream& operator<<(ostream& os, Person& p) {
    os << "First name: " << p.get_first_name() << ", Last name: " << p.get_last_name();
    return os;
}
int main(){
   Person p("Sumit", "Ray");
   
   cout << p << ", he is our member.";
}

輸入

p("Sumit", "Ray")

輸出

First name: Sumit, Last name: Ray, he is our member.

更新於:07-Oct-2021

376 次瀏覽

開啟您的 職業

完成課程即可獲得認證

開始
廣告
© . All rights reserved.