C++程序设计 湖南大学 杜四春、银红霞 第13章多态性与虚函数 131普通成员函数重载 13.2派生类指针 133虚函数 13.4纯虚函数与抽象类
C++程序设计 湖南大学 杜四春、银红霞 第13章 多态性与虚函数 13.1 普通成员函数重载 13.2 派生类指针 13.3 虚函数 13.4 纯虚函数与抽象类
C++程序设计 湖南大学 杜四春、银红霞 多态性是面向对象程序设计的重要特征之 所谓多态性是指当不同的对象收到相同的 消息时,产生不同的动作。C++的多态性具体 体现在运行和编译两个方面,在程序运行时的 多态性通过继承和虚函数来体现,而在程序编 译时多态性体现在函数和运算符的重载上
C++程序设计 湖南大学 杜四春、银红霞 多态性是面向对象程序设计的重要特征之 一。所谓多态性是指当不同的对象收到相同的 消息时,产生不同的动作。C++的多态性具体 体现在运行和编译两个方面,在程序运行时的 多态性通过继承和虚函数来体现,而在程序编 译时多态性体现在函数和运算符的重载上
C++程序设计 湖南大学 杜四春、银红霞 13.1普通成员函数重载 在C++语言中,只有在声明函数原型时形式参数 的个数或者对应位置的类型不同,两个或更多的函数 就可以共用一个名字。这种在同一作用域中允许多个 函数使用同一函数名的措施被称为重载 ( overloading)。函数重载是C++程序获得多态性的 途径之 131.1函数重载的方法 函数重载要求编译器能够唯一地确定调用一个函 数时应执行哪个函数代码,既采用哪个函数实现。确定 函数实现时,要求从函数参数的个数和类型上来区分 这就是说,进行函数重载时,要求同名函数在参数个 数上不同,或者参数类型不同。否则,将无法实现函 数重载
C++程序设计 湖南大学 杜四春、银红霞 13.1 普通成员函数重载 在C++语言中,只有在声明函数原型时形式参数 的个数或者对应位置的类型不同,两个或更多的函数 就可以共用一个名字。这种在同一作用域中允许多个 函 数 使 用 同 一 函 数 名 的 措 施 被 称 为 重 载 (overloading)。函数重载是C++程序获得多态性的 途径之一。 13.1.1 函数重载的方法 函数重载要求编译器能够唯一地确定调用一个函 数时应执行哪个函数代码,既采用哪个函数实现。确定 函数实现时,要求从函数参数的个数和类型上来区分。 这就是说,进行函数重载时,要求同名函数在参数个 数上不同,或者参数类型不同。否则,将无法实现函 数重载
C++程序设计 湖南大学 杜四春、银红霞 例13-1:给出以下程序的运行结果。 #include <iostream. h> Int square(int x) return xX 此程序的运行结果为: The square of integer 7 is 49 double square(doubley The square of integer 7.5 is 56.25 return*y maino cout<< The square of integer 7 is<<square(7<<endl cout<<,The square of double 7.5 is<<square(7.5)<<endl; return 0
C++程序设计 湖南大学 杜四春、银红霞 #include <iostream.h> int square(int x) { return x*x; } double square(double y) { return y*y; } main() { cout<<”The square of integer 7 is”<<square(7)<<endl; cout<<” The square of double 7.5 is”<<square(7.5)<<endl; return 0; } 例13-1:给出以下程序的运行结果。 此程序的运行结果为: The square of integer 7 is 49 The square of integer 7.5 is 56.25
C++程序设计 湖南大学 杜四春、银红霞 例13-2:用重载函数实现求圆和矩形的周长 #include <iostream. h> void main( const double pl31415 double length (float r) float a.b.r return 2 PEr cout<<输入圆半径:”; cin>> double length( float x, float y)cout<”圆周长:”<<engh)<emnd; cout<<?输入矩形长和宽:”; return 2*(x+y cin>>a>>b cout<<”矩形周长:”<<engh(r)<<endl
C++程序设计 湖南大学 杜四春、银红霞 #include <iostream.h> const double PI=3.1415; double length(float r) { return 2*PI*r; } double length(float x,float y) { return 2*(x+y); } 例13-2:用重载函数实现求圆和矩形的周长。 void main() { float a,b,r; cout<<”输入圆半径:” ; cin>>r; cout<<”圆周长:”<<length(r)<<endl; cout<<”输入矩形长和宽:” ; cin>>a>>b; cout<<”矩形周长:”<<length(r)<<endl; }