第九章多态性 ●●●●● ●●●● 多态性( polymorphism)也是面向对象程序设计的标志° 性特征。前面我们讨论过面向对象的两个重要特性封装性和 继承性,这三大特性是相互关联的,封装性是基础,继承性是 关键,而多态性是补充 简单地说,在C十语言中,同一程序的某个运算符或者某 个函数名在不同情况下具有不同的实现的现象,叫做多态性。 其实在C语言中,我们已经接触过多态性的应用,对于 不同类型的数据,运算符“”具有不同的运算含义,如果两个 操作数都是整数,那么“”进行整数相除,结果也是整数,而 其中一个操作数是实数类型的,那么“”进行的是数学上普通 的除法,因此,面对不同的处理对象,“”运算符有不同意义 C++支持两种形式的多态性,一种是编译时的多态性,也 称为静态联编,是通过重载来实现的,第二种是运行时的多态 性,也称为动态联编,是通过继承和虚函数来实现的
第九章 多态性 多态性(polymorphism)也是面向对象程序设计的标志 性特征。前面我们讨论过面向对象的两个重要特性—封装性和 继承性,这三大特性是相互关联的,封装性是基础,继承性是 关键,而多态性是补充。 简单地说,在C++语言中,同一程序的某个运算符或者某 个函数名在不同情况下具有不同的实现的现象,叫做多态性。 其实在C语言中,我们已经接触过多态性的应用,对于 不同类型的数据,运算符“\”具有不同的运算含义,如果两个 操作数都是整数,那么“\”进行整数相除,结果也是整数,而 其中一个操作数是实数类型的,那么“\”进行的是数学上普通 的除法,因此,面对不同的处理对象,“\”运算符有不同意义。 C++支持两种形式的多态性,一种是编译时的多态性,也 称为静态联编,是通过重载来实现的,第二种是运行时的多态 性,也称为动态联编,是通过继承和虚函数来实现的
第九章多志性 ●●●●● 编译时的多态性是指程序在编译前就可以确定的多态性,他是通过 ●●● 重载机制来实现,重载包括函数重载和运算符重载。函数重载是允许在同。 程序中一个函数名可以对应多个函数体的实现,形成函数名的多态性 在使用中根据函数的参数具体确定调用哪个函数,而运算符重载允许根据 实际需要重新定义C+语言已有运算符的功能。这种多态性体现出“一个 接口,多个方法”的机制。 运行多态性是指必须在运行中才可以确定的多态性,运行多态性是通 过继承和虚函数来实现的。要产生运行时的多态性,首先要设计一个类层 次,然后在某些类中使用虚函数 编译时的多态性→通过函数的重载和运算 符的重载来实现的。 在C++ 中有两 运行时的多态性是指在程序执行 种多态 前,无法根据函数名和参数来确 性 定该调用哪一个函数,必须在程 运行时的一情况来动态地确仑居执行的具体 序执行过程中,根 多态性
第九章 多态性 编译时的多态性是指程序在编译前就可以确定的多态性,他是通过 重载机制来实现,重载包括函数重载和运算符重载。函数重载是允许在同 一程序中一个函数名可以对应多个函数体的实现,形成函数名的多态性, 在使用中根据函数的参数具体确定调用哪个函数,而运算符重载允许根据 实际需要重新定义C++语言已有运算符的功能。这种多态性体现出“一个 接口,多个方法”的机制。 运行多态性是指必须在运行中才可以确定的多态性,运行多态性是通 过继承和虚函数来实现的。要产生运行时的多态性,首先要设计一个类层 次,然后在某些类中使用虚函数。 在C++ 中有两 种多态 性 编译时的多态性 运行时的 多态性 运行时的多态性是指在程序执行 前,无法根据函数名和参数来确 定该调用哪一个函数,必须在程 序执行过程中,根据执行的具体 情况来动态地确定。 通过函数的重载和运算 符的重载来实现的
第九章多态性 ●●●●● ●●●● ●●0 ●●● ●●●● 91函数重载 92运算符重载 93虚函数 94纯虚函数和抽象类
第九章 多态性 9.1 函数重载 9.4 纯虚函数和抽象类 9.3 虚函数 9.2 运算符重载
91画数重载 ●●●●● ●●●● 在C++语言中,只有在声明函数原型时形式参数的多 ●●●● 或者对应位置的数据类型不同,两个或更多的功能相似的函数 就可以共用一个函数名。这种在同一作用域中允许多个函数使 用同一函数名的措施被称为重载( overloading)。函数重载 是C++程序获得多态性的途径之一。 函数重载的方法: 函数重载要求编译器能够唯一地确定调用一个函数时应执 行哪个函数代码,既采用哪个函数实现。确定函数实现时,要 求从函数参数的个数和类型上来区分。这就是说,进行函数重 载时,要求同名函数在参数个数上不同,或者参数数据类型不 同。否则,将无法实现函数重载 <心画
9.1 函数重载 在C++语言中,只有在声明函数原型时形式参数的个数 或者对应位置的数据类型不同,两个或更多的功能相似的函数 就可以共用一个函数名。这种在同一作用域中允许多个函数使 用同一函数名的措施被称为重载(overloading)。函数重载 是C++程序获得多态性的途径之一。 函数重载的方法: 函数重载要求编译器能够唯一地确定调用一个函数时应执 行哪个函数代码,既采用哪个函数实现。确定函数实现时,要 求从函数参数的个数和类型上来区分。这就是说,进行函数重 载时,要求同名函数在参数个数上不同,或者参数数据类型不 同。否则,将无法实现函数重载
91画数重载 ●●●●● ●●●● include <iostream.h>//9-1-1. cpp ●●0 ●●● ●●●● int square (int x) cut<<"(int类型函数被调用)”; return x*x double square double y cout<<"( double类型函数被调用)”; return y*y maino cout<<"整数7的平方是:”<< square(7)<<end cout<<"实数75的平方是:”<< square(75) <<enda return OF <心画
9.1 函数重载 #include <iostream.h> // 9-1-1.cpp int square(int x) { cout << “(int 类型函数被调用)”; return x*x; } double square(double y) { cout << “(double 类型函数被调用)”; return y*y; } main() { cout<<”整数 7 的平方是:” << square(7) <<endl; cout<<” 实 数 7.5 的平方是: ” << square(7.5) <<endl; return 0; }