1. 运算符
2. 自定义数据类型与运算符重载
3. 运算符重载
4. 运算符重载为普通函数
class Complex{
public:
Complex(double r = 0.0, double i = 0.0){
real = r;
imaginary = i;
}
double real; //real part
double imaginary; //imaginary part
};
Complex operator+ (const Complex & a, const Complex & b)
{
return Complex(a.real + b.real, a.imaginary + b.imaginary);
}//"类名(参数表)"就代表一个对象
Complex a(1,2), b(2, 3), c;
c = a + b;//相当于什么?
重载为普通函数时,参数个数为运算符目数
5. 运算符重载为成员函数
class Complex{
public:
Complex(double r = 0.0, double m = 0.0):
real(r), imaginary(m){ } //constructor
Complex operator+(const Complex &); //addition
Complex operator-(const Complex &); //subtraction
private:
double real; //real part
double imaginary; //imaginary part
};
//Overloaded addition operator
Complex Complex::operator+(const Complex & operand2){
return Complex(real + operand2.real,
imaginary + operand2.imaginary);
}
//Overloaded subtraction operator
Complex Complex::operator-(const Complex & operand2){
return Complex(real - operand2.real,
imaginary - operand2.imaginary);
}
int main(){
Complex x, y(4.3, 8.2), z(3.3, 1.1);
x = y + z;
x = y - Z;
return 0;
}
重载为成员函数时,参数个数为运算符数目减一
站在巨人的肩上
【1】北京大学信息技术学院《程序设计实习》