C++ Complex Number Input/Output Using Friend Operators

#include <iostream>
using namespace std;

// uses friend functions to overload >> and << for complex numbers

class Complex {
private:
    int real, imag;

public:
    Complex(int r = 0, int i = 0) {
        real = r;
        imag = i;
    }

    friend ostream& operator<<(ostream &out, const Complex &c);
    friend istream& operator>>(istream &in, Complex &c);
};

istream& operator>>(istream &in, Complex &c) {
    cout << "Enter Real Part: ";
    in >> c.real;
    cout << "Enter Imaginary Part: ";
    in >> c.imag;
    return in;
}

ostream& operator<<(ostream &out, const Complex &c) {
    out << c.real << " + " << c.imag << "i";
    return out;
}

int main() {
    Complex c1;
    cin >> c1;
    cout << "The Complex object is: ";
    cout << c1;
    return 0;
}