例5的相关内容总结 1.基类中的虚函数是由 virtual定义的: virtual void print( 2在定义了虚函数之后,只要定义一个基类的指针,就 可以调用子类的函数: p=&ob2 ∥p指向子类对象ob2 p→ print();∥动态联编,调用子类成员函数 3.要实现动态联编,子类中的函数必需与基类的函数形 式一致,若在子类中对虚函数的形式进行了改变,则 子类中的函数将失去多态性。 4C++有两种多态性: 静态多态性:操作的对象编译时确定的—重载实现; 动态多态性:操作的对象依赖运行的进程虚函数; 2021/2/24 16
2021/2/24 16 例5的相关内容总结 1. 基类中的虚函数是由virtual 定义的: virtual void print( ); 2. 在定义了虚函数之后,只要定义一个基类的指针,就 可以调用子类的函数: p= &ob2; // p 指向子类对象 ob2 p->print( ); // 动态联编, 调用子类成员函数 3. 要实现动态联编,子类中的函数必需与基类的函数形 式一致,若在子类中对虚函数的形式进行了改变,则 子类中的函数将失去多态性。 4.C++有两种多态性: 静态多态性:操作的对象编译时确定的 重载实现; 动态多态性:操作的对象依赖运行的进程 虚函数;
例6:使用虚函数。 执行后输出: 1204 x=1000y=2000z3000 1000=2000z3000 第一行输出是调用三个不同对象的成员函数, 而第二行的输出是将三个不同类型的对象起始地 址赋给基类的指针变量pa,当pa指向不同对象时 ,调用不同对象中的虚函数,这就是运行的多态 性 2021/224
2021/2/24 17 例6:使用虚函数。 执行后输出: 1204 x=1000 y=2000 z=3000 x=1000 y=2000 z=3000 第一行输出是调用三个不同对象的成员函数, 而第二行的输出是将三个不同类型的对象起始地 址赋给基类的指针变量pa,当pa指向不同对象时 ,调用不同对象中的虚函数,这就是运行的多态 性