<<的重载

#include 

class Complex
{
public:
    Complex(int a = 0, int b = 0) : a_(a), b_(b)
    {
    }

private:
    int a_;
    int b_;

    friend Complex operator+(const Complex& lhs, const Complex& rhs);
    friend std::ostream& operator<<(std::ostream& os, const Complex& cpl);
};

Complex operator+(const Complex& lhs, const Complex& rhs)
{
    return Complex(lhs.a_ + rhs.a_, lhs.b_ + rhs.b_);
}

std::ostream& operator<<(std::ostream& os, const Complex& cpl)
{
    return os << '(' << cpl.a_ << '+' << cpl.b_ << "i)";
}

using namespace std;

int main()
{
    Complex c1(10, 20);
    Complex c2(1, 2);
    cout << c1 << '\n'
        << c2 << '\n';

    Complex c4 = c2 + c1 + c1;
    cout << c4 << endl;

    return 0;
}

你可能感兴趣的:(<<的重载)