C++五:重载与多态
一:概述
二:实现
1.重载多态(运算符重载)
1.1 重载为类的非静态成员函数
#include <iostream>
using namespace std;
class Complex //复数类定义
{
public: // 外部接口
Complex(double r = 0.0, double i = 0.0) :real(r), imag(i) {}
Complex operator+(const Complex &c2)const;//定义一个+的重载函数
Complex operator-(const Complex &c2)const;//定义一个-的重载函数
void display()const;
private:
double real;
double imag;
};
Complex Complex::operator+(const Complex &c2)const {
return Complex(real + c2.real, imag + c2.imag);//返回两个值的和
}
Complex Complex::operator-(const Complex &c2)const {
return Complex(real - c2.real, imag - c2.imag);//返回两个值的差
}
void Complex::display()const {
cout << "(" << real << "," << imag << ")" << endl;
}
int main() {
Complex c1(5, 4), c2(2, 10), c3;
cout << "c1=";
c1.display();
cout << "c2=";
c2.display();
c3 = c1 + c2;
cout << "c3=c1+c2=";
c3.display();
c3 = c1 - c2;
cout << "c3=c1-c2=";
c3.display();
return 0;
}
运行结果为:
可以看到,在main函数中,c3根据c1与c2的不同操作,自动选择了对应的函数。
1.2 重载为非成员函数
2.虚函数
2.1虚析构函数
virtual ~类名();
例如: