C++运算符重载
案例:复数
Complex.h
#pragma once
#include <iostream>
class Complex
{
friend std::ostream& operator<<(std::ostream &out, const Complex &c);
public:
Complex(int real, int image);
~Complex();
Complex operator+(const Complex &c);
Complex& operator+=(const Complex &c);
Complex& operator++(); //前置
const Complex operator++(int); //后置
private:
int m_real;
int m_imag;
};
std::ostream& operator<<(std::ostream &out, const Complex &c);
Complex.cpp
#include "Complex.h"
Complex::Complex(int real, int imag)
: m_real(real)
, m_imag(imag)
{
}
Complex::~Complex()
{
}
Complex Complex::operator+(const Complex & c)
{
return Complex(m_real+c.m_real, m_imag+c.m_imag);
}
Complex& Complex::operator+=(const Complex & c)
{
this->m_real += c.m_real;
this->m_imag += c.m_imag;
return *this;
}
Complex& Complex::operator++()
{
this->m_real++;
this->m_imag++;
return *this;
}
const Complex Complex::operator++(int)
{
Complex tmp = *this;
this->m_real++;
this->m_imag++;
return tmp;
}
std::ostream& operator<<(std::ostream &out, const Complex &c)
{
return out << c.m_real << " + " << c.m_imag << "i";
}
main.cpp
#include "Complex.h"
int main()
{
std::cout << Complex(1, 2) + Complex(2, 1) << std::endl;
std::cout << ++Complex(1, 1) << std::endl;
std::cout << Complex(0, 0)++ << std::endl;
system("pause");
return 0;
}