多态性:指同样的消息被不同类型的对象接收时有可能产生完全不同的行为(与之前类型兼容相反)
多态性主要有三种表现形式:
1、函数重载
2、运算符重载
3、虚函数
数目运算符重载实例:(不可以重载的运算符:* :: ?: sizeof)
原则:1、不能改变原运算符的优先级和结合性
2、不能改变操作数的个数
3、经重载的运算符,其操作数中至少应该有一个是自定义类型。
实现的形式有两种:友元函数或者类成员函数
1、如果要重载 B 为类成员函数,使之能够实现表达式 oprd1 B oprd2,其中 oprd1 为A 类对象,则 B 应被重载为 A 类的成员函数,形参类型应该是 oprd2 所属的类型。
经重载后,表达式 oprd1 B oprd2 相当于 oprd1.operator B(oprd2)。
2、重载为类成员函数时 参数个数=原操作数个数-1 (后置++、--除外)
3、 重载为友元函数时 参数个数=原操作数个数,且至少应该有一个自定义类型的形参。
4、如果需要重载一个运算符,使之能够用于操作某类对象的私有成员,可以将此运算符重载为该类的非成员(通常为友元)函数。
5、函数的形参代表依自左至右次序排列的各操作数。
6、后置单目运算符 ++和--的重载函数,形参列表中要增加一个int,但不必写形参名。
1 #include<iostream> 2 using namespace std; 3 class Complex 4 { 5 private: 6 double real; 7 double imag; 8 public: 9 Complex(double a,double b):real(a),imag(b) 10 {} 11 Complex() 12 {} 13 Complex operator +(Complex c1);重载为类成员函数 14 Complex operator -(Complex c2); 15 void display(); 16 17 }; 18 void Complex::display() 19 {