L53A08 第八章多态性( polymophism) 本章主要内容 1.多态的概念 2.虚函数 重点 3.静态绑定、动态绑定与动态绑定的实现机制 4.纯虚函数与抽象类 重点
21:53:08 第八章 多态性(polymophism) 本章主要内容 1. 多态的概念 2. 虚函数 —— 重点 3. 静态绑定、动态绑定与动态绑定的实现机制 4. 纯虚函数与抽象类 —— 重点
L53A08 §1多态的概念 多态性指一个名字,多种语义,或接口相同,多种实现 >C++支持两种形式的多态 1.静态多态(编译时多态) 2.动态多态(运行时多态)
21:53:08 §1 多态的概念 ➢多态性指一个名字,多种语义,或接口相同,多种实现 ➢C++支持两种形式的多态 1.静态多态(编译时多态) 2.动态多态(运行时多态)
L53A08 静态多态 >静态多态主要指函数和运算符的重载 例:函数的重载 int abs(int x(return x float abs(float x)( return x long abs(long x)( return x; j void maino cout < abs(-100)<< end1; cout <s abs(-2. 5f)<< end1 cout <s abs(123456789L)<< end1
21:53:08 ➢静态多态 ➢静态多态主要指函数和运算符的重载 例:函数的重载 int abs(int x){ return x; } float abs(float x){ return x; } long abs(long x){ return x; } void main() { cout << abs(-100) << endl; cout << abs(-2.5f ) << endl; cout << abs(123456789L) << endl; }
L53A08 例:函数的重载(续) class x public void Show(int char) void Show(char * char) void maino X Ob j xbj Show(1,'a) x0bj.Show(张三”,”b3);
21:53:08 例:函数的重载(续) class X{ public: void Show(int ,char); void Show(char *,char); }; void main() { X xObj; xObj.Show(1,’a’); xObj.Show(“张三” , ’b’); }
L53A08 例:函数重载(续) class x class Y: public X public public void show(int)( void showN void showo( void ma ino{|结论 X XOb j; 重载函数、运算符重载对应的函数 Y yob j; 的调用和函数体之间对应关系的建立 x0 bj Show0;是由编译程序和连接程序根据函数的参 y0 bj Show(10);数数目、参数类型的匹配关系,在编译 0 ojShow0;连接阶段完成的,所以静态多态又称为 y0bjx:$how0编译-连接时多态(简称编译时多态)
21:53:08 例:函数重载(续) class X { public: void show(){ } }; class Y:public X{ public: void show(int){ } void show(){ } }; void main(){ X xObj; Y yObj; xObj.Show(); yObj.Show(10); yObj.Show(); yObj.X::Show(); } 结论: 重载函数、运算符重载对应的函数 的调用和函数体之间对应关系的建立, 是由编译程序和连接程序根据函数的参 数数目、参数类型的匹配关系,在编译 连接阶段完成的,所以静态多态又称为 编译-连接时多态(简称编译时多态)