Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การโอเวอร์โหลดออเปอเรเตอร์สตรีม insertion (<<) และ extraction (>>) ใน C++


C++ สามารถรับอินพุตและแสดงเอาต์พุทชนิดข้อมูลสร้าง込 (built-in data types) โดยใช้ออเปอเรเตอร์สตรีม extraction operator >> และ stream insertion operator << ออเปอเรเตอร์สตรีม insertion และ extraction ยังสามารถโอเวอร์โหลดได้เพื่อดำเนินการรับอินพุตและแสดงเอาต์พุทสำหรับชนิดข้อมูลที่ผู้ใช้กำหนดเอง (user-defined types) เช่น ออบเจกต์

ที่นี่ สำคัญที่จะต้องทำให้ฟังก์ชันการโอเวอร์โหลดออเปอเรเตอร์เป็น friend ของคลาส เพราะมันจะถูกเรียกโดยไม่ต้องสร้างออบเจกต์

ตัวอย่างต่อไปนี้อธิบายวิธีการโอเวอร์โหลด extraction operator >> และ insertion operator <<

โค้ดตัวอย่าง

#include <iostream>
using namespace std;

class Distance {
private:
    int feet;   // 0 to infinite
    int inches; // 0 to 12
public:
    Distance() {
        feet = 0;
        inches = 0;
    }
    Distance(int f, int i) {
        feet = f;
        inches = i;
    }
    friend ostream &operator<<(ostream &output, const Distance &D) {
        output << "F : " << D.feet << " I : " << D.inches;
        return output;
    }
    friend istream &operator>>(istream &input, Distance &D) {
        input >> D.feet >> D.inches;
        return input;
    }
};

int main() {
    Distance D1(11, 10), D2(5, 11), D3;
    cout << "Enter the value of object : " << endl;
    cin >> D3;
    cout << "First Distance : " << D1 << endl;
    cout << "Second Distance :" << D2 << endl;
    cout << "Third Distance :" << D3 << endl;
    return 0;
}

ผลลัพธ์ตัวอย่าง

$./a.out
Enter the value of object :
70 10
First Distance : F : 11 I : 10
Second Distance : F : 5 I : 11
Third Distance : F : 70 I : 10