C++之多态和虚函数
? 多态性是面向对象程序设计的重要特征之一,多态性机制:
? 增加了面向对象软件系统的灵活性
? 减少了冗余信息
? 提高了软件的可重用性和可扩充性
多态性是面向对象的一个重要特征。什么是多态性?
以下为结构化编程中的一个例子:
#include<iostream>using namespace std;class Complex{public:Complex(){real = 0;imag = 0;}Complex(double r,double i){real = r;imag = i;}friend Complex operator+(Complex &c1,Complex &c2);void display();private:double real;double imag;};Complex operator+(Complex &c1,Complex &c2){return Complex(c1.real+c2.real,c1.imag+c2.imag);}void Complex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main(int argc,char *argv[]){Complex c1(3,4),c2(5,-10),c3;c3 = c1 + c2;cout<<"c1=";c1.display();cout<<"c2=";c2.display();cout<<"c1+c2=";c3.display();return 0;}因为运算符函数要访问Complex类对象中的成员。如果运算符函数不是Complex类的友元函数,而是一个普通的函数,它是没有权利访问Complex类的私有成员的。